我有一個超過100K文件的目錄,我想爲每個文件執行一些功能。現在,我使用File.listFiles()
要做到這一點,但是這是非常低效的,因爲:列出目錄中的Java文件
- 發生前的任何處理,造成不必要的長掛的所有文件名必須讀取。
- 所有文件名最終被放入數組中,佔用大量內存。在任何時候,我只需要足夠的內存來存儲一個文件名,但在這裏我總是需要足夠的內存來存儲所有文件名。
我真正想要的東西就像一個UNIX目錄句柄,但我找不到像這樣的東西。我還查找了OpenJDK中的File.listFiles()
究竟如何,但它最終的結果是native function call for UNIX-based systems (line 268)和for Windows (line 525)。更糟糕的是,本地調用預計會返回數組。
我想避免插入JNI或調用外部程序,如果可能的話。