我使用以下代码计算文件夹中包含许多子文件夹和文件的文件数。我还以MB为单位计算所有文件的总大小。
/*these two are global variables*/
int filesCount = 0;
double folderSize = 0;
/*all this within main method*/
getFilesDetails("D:\\Dataset\\Linux_Dataset");
System.out.println("\nTotal number of files processed: "+filesCount);
System.out.println("Total size of processed files: "+folderSize+" MB\n\n");
public void getFilesDetails(String location) throws NoSuchAlgorithmException, IOException {
File directory = new File(location);
File[] files = directory.listFiles();
if (files!=null) {
for (File f : files) {
if (f.isFile()) {
filesCount++;
folderSize += f.length()/1048567.0;
} else if (f.isDirectory()) {
getFilesDetails(f.getAbsolutePath());
}
}
}
}
如果文件数量较少,结果是准确的。我有一个文件夹,共有76176个文件,总大小为833 MB,得到的结果也与下面相同,
Total number of files processed: 76176
Total size of processed files: 833.3733943562565 MB
但是当我添加更多文件和文件夹时,结果不准确。我在属性中总共有10,70,493个文件,总大小为10.9 GB。但是当我运行代码时它显示10,80,477并且获得的总大小也是错误的。
Total number of files processed: 1080477
Total size of processed files: 11248.867834882847 MB
即使文件数量是以百万计并且大小超过10 GB,还有其他准确的计算方法吗?谢谢。
这是我的输入文件夹属性... Original input folder priperties