我有一个包含超过 100K 文件的目录,我想为每个文件执行一些功能。现在我正在File.listFiles()
这样做,但这非常低效,因为:
- 在进行任何处理之前,必须读入所有文件名,从而导致不必要的长时间挂起。
- 所有文件名最终都被放入一个数组中,占用大量内存。在任何给定时间,我只需要足够的内存来存储一个文件名,但在这里我总是需要足够的内存来存储所有文件名。
我真正想要的是行为类似于 UNIX 目录句柄的东西,但我找不到这样的东西。我还查看了File.listFiles()
OpenJDK 中的确切方式,但最终结果是基于 UNIX 的系统(第 268 行)和Windows(第 525 行)的本机函数调用。更糟糕的是,本机调用预计会返回数组。
如果可能的话,我想避免插入 JNI 或调用外部程序。