java - 使用Java计算目录中的文件数

标签 java performance file directory

如何使用 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/

相关文章:

file - JSF 1.2 JSP 2.0 带有属性的简单自定义标记文件

java - 简单的Java游戏引擎/库

java - 解析 xs :date with timezone into Joda LocalDate

java - 线程 "main"org.openqa.selenium.WebDriverException : permission denied 中出现异常

c# - IIS6、ASP.NET MVC 1 和随机减速

performance - 哪个是自动 GUI 性能测试的最佳工具?

c# - 为什么在这种情况下使用 AsParallel() 比 foreach 慢?

java - 从同一文件夹中的 JAR 访问文件

java - 未找到 Freemarker 模板

c++ - 格式化 .txt 文件中的字符串 (C++)