Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:有没有一种方法可以在不列出所有文件的情况下查找目录中的文件数?_Java_File_Count - Fatal编程技术网

Java:有没有一种方法可以在不列出所有文件的情况下查找目录中的文件数?

Java:有没有一种方法可以在不列出所有文件的情况下查找目录中的文件数?,java,file,count,Java,File,Count,我目前使用以下代码查找目录中的文件数: File[] files = dir.listFiles(); count = files.length; 这样做的主要问题是,如果目录中的文件数量很大(100k或更大),cpu的使用率就会大大超过这个数字。有没有节省内存的方法来获取文件数 我不想执行任何本机呼叫。我想你不能。或者至少不使用标准Java工具 您可以将有关目录和文件的信息保存在程序中定义的某种数据结构中,或者只是将计数存储在某个位置,但这只有在您想多次获取有关同一目录的信息时才有用。使用标

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

File[] files = dir.listFiles();
count = files.length;
这样做的主要问题是,如果目录中的文件数量很大(100k或更大),cpu的使用率就会大大超过这个数字。有没有节省内存的方法来获取文件数


我不想执行任何本机呼叫。

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


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

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

不过,您可以通过计算一次,然后跟踪添加和删除内容的次数来近似计算。但是,只有当您是唯一一个添加和删除文件的人时,这才有效

稍微复杂一点的是使用JavaNIO功能来监视文件夹的更改

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


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

刚刚编辑了我的问题。我不想使用任何本地电话。请不要使用“lakh”,这里理解它的人很少。使用1k表示1000,或使用100k表示100万。1m等人已经试过了。列表比列表文件稍微好一点,但仍然会占用更多的cpu。