我有一个超过100K文件的目录,我想为每个文件执行一些功能。现在,我使用File.listFiles()
要做到这一点,但是这是非常低效的,因为:列出目录中的Java文件
- 发生前的任何处理,造成不必要的长挂的所有文件名必须读取。
- 所有文件名最终被放入数组中,占用大量内存。在任何时候,我只需要足够的内存来存储一个文件名,但在这里我总是需要足够的内存来存储所有文件名。
我真正想要的东西就像一个UNIX目录句柄,但我找不到像这样的东西。我还查找了OpenJDK中的File.listFiles()
究竟如何,但它最终的结果是native function call for UNIX-based systems (line 268)和for Windows (line 525)。更糟糕的是,本地调用预计会返回数组。
我想避免插入JNI或调用外部程序,如果可能的话。