准确计算java中文件夹中的文件数

时间:2016-09-06 05:53:47

标签: java file loops oop directory

我使用以下代码计算文件夹中包含许多子文件夹和文件的文件数。我还以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

0 个答案:

没有答案