首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Java统计目录中的文件数

使用Java统计目录中的文件数
EN

Stack Overflow用户
提问于 2009-03-26 20:25:57
回答 11查看 154.8K关注 0票数 72

如何使用Java计算目录中的文件数?为简单起见,我们假设该目录没有任何子目录。

我知道以下的标准方法:

代码语言:javascript
复制
new File(<directory path>).listFiles().length

但这将有效地遍历目录中的所有文件,如果文件数量很大,这可能需要很长时间。此外,我并不关心目录中的实际文件,除非它们的数量大于某个固定的大数字(比如5000)。

我在猜测,但是目录(或者在Unix中是它的i-node )不存储其中包含的文件数量吗?如果我能直接从文件系统中得到这个数字,它会快得多。在后端开始进行真正的处理之前,我需要对Tomcat服务器上的每个HTTP请求执行此检查。因此,速度是最重要的。

我可以每隔一段时间运行一个守护进程来清除目录。我知道,所以请不要给我那个解决方案。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-03-27 12:57:38

这可能不适合您的应用程序,但是您始终可以尝试本机调用(使用jni或jna),或者在返回到list().length之前执行特定于平台的命令并读取输出。在*nix上,您可以执行ls -1a | wc -l (注意,第一个命令是破折号-one-a,第二个命令是破折号-lowercase-L)。不确定在windows上什么是正确的-也许只是一个dir,然后查找摘要。

在考虑这类事情之前,我强烈建议您创建一个包含大量文件的目录,看看list().length是否真的需要太长时间。正如this blogger所建议的,您可能不想为此费心。

我自己可能会同意Varkhan的回答。

票数 13
EN

Stack Overflow用户

发布于 2009-03-26 20:39:07

啊..。在Java中没有直接的方法来做到这一点的理由是文件存储抽象:一些文件系统可能没有目录中随时可用的文件数量……该计数甚至可能没有任何意义(例如,请参阅分布式、P2P文件系统、将文件列表存储为链表的文件系统或数据库支持的文件系统……)。所以,是的,

代码语言:javascript
复制
new File(<directory path>).list().length

可能是你最好的选择。

票数 92
EN

Stack Overflow用户

发布于 2009-03-26 20:34:50

不幸的是,我相信这已经是最好的方式了(尽管list()

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/687444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档