Java:有没有办法在不必列出所有文件的情况下查找目录中的文件数?

时间:2014-02-21 16:32:28

标签: java file count

我目前使用以下代码查找目录中的文件数:

File[] files = dir.listFiles();
count = files.length;

这个问题的主要问题是,如果目录中的文件数量很大(100k或更高),则CPU使用率会高于上述值。是否有任何内存有效的方法来获取文件数?

我不想执行任何原生呼叫。

3 个答案:

答案 0 :(得分:0)

我认为你不能。或者至少不使用标准的Java工具。

您可以将目录和文件的信息保存在您在程序中定义的某种数据结构中,或者只是将计数存储在某处,但这只有在您希望多次获取有关同一目录的信息时才有用。

答案 1 :(得分:0)

使用标准Java没有直接的方法。

您可以通过计算一次然后跟踪添加和删除内容的次数来近似它。这只适用于你是唯一一个添加和删除文件的人。

稍微复杂的是使用java nio功能来监视文件夹的更改。

对文件夹进行一次计数,然后监控文件夹中的更改,并在添加和删除文件时更新您的计数。

http://docs.oracle.com/javase/tutorial/essential/io/notification.html

答案 2 :(得分:0)

如果要获得更好的性能,请尝试将listFiles()方法更改为File类中的list()方法。