如何使用 Java 计算目录中的文件数?为简单起见,我们假设该目录没有任何子目录。
我知道的标准方法:
new File(<directory path>).listFiles().length
但这将有效地遍历目录中的所有文件,如果文件数量很大,这可能需要很长时间。另外,我不关心目录中的实际文件,除非它们的数量大于某个固定的大数字(比如 5000)。
我猜,但是目录(或者在 Unix 的情况下是它的 i 节点)不是存储其中包含的文件数吗?如果我可以直接从文件系统中获取该数字,它会快得多。在后端开始进行实际处理之前,我需要对 Tomcat 服务器上的每个 HTTP 请求进行此检查。因此,速度至关重要。
我可以每隔一段时间运行一个守护进程来清除目录。我知道,所以请不要给我那个解决方案。
最佳答案
啊...在 Java 中没有直接的方法来执行此操作的基本原理是文件存储抽象:某些文件系统可能没有目录中现成可用的文件数量...该计数甚至可能没有任何意义完全没有(参见例如分布式、P2P 文件系统、将文件列表存储为链表的 fs 或数据库支持的文件系统......)。 所以是的,
new File(<directory path>).list().length
可能是你最好的选择。
关于java - 使用Java计算目录中的文件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/687444/