Java 获取目录大小的方法返回不同的结果

Java 获取目录大小的方法返回不同的结果,java,android,file,directory,size,Java,Android,File,Directory,Size,我正在尝试获取Android上文件夹的大小。问题是: 每次函数返回不同的内容时 它不会扫描所有文件 有人能告诉我为什么吗 private long dirSize(File dir) { long result = 0; File[] fileList = dir.listFiles(); for(int i = 0; i < fileList.length; i++) { // Recursive call if it's a directory

我正在尝试获取Android上文件夹的大小。问题是:

  • 每次函数返回不同的内容时
  • 它不会扫描所有文件 有人能告诉我为什么吗

    private long dirSize(File dir) {
        long result = 0;
        File[] fileList = dir.listFiles();
    
        for(int i = 0; i < fileList.length; i++) {
            // Recursive call if it's a directory
            if(fileList[i].isDirectory()) {
                result += dirSize(fileList [i]);
            } else {
                // Sum the file size in bytes
                result += fileList[i].length();
            }
        }
        return result/1024/1024; // return the file size
    }
    
    private long dirSize(文件目录){
    长结果=0;
    File[]fileList=dir.listFiles();
    for(int i=0;i

    我从另一个线程得到这个函数。如何改进这段代码?

    最后去掉除法。每个子文件夹将四舍五入到最接近的MB,并以字节为单位添加到当前文件夹的大小。返回字节并在调用者中处理转换。

    结束时去掉除法。每个子文件夹将四舍五入到最接近的MB,并以字节为单位添加到当前文件夹的大小。返回字节并在调用者中处理转换。

    运行相同的代码应返回相同的值,即使它是以错误的方式计算的@Omar应该在执行操作时验证Android内部是否发生了变化operation@Omar:验证@developmental是否指出了问题的出现,因为您正在递归调用该方法。如果它被调用一次,它可能会工作…运行相同的代码应该返回相同的值,即使它是以错误的方式计算的@Omar应该在执行操作时验证Android内部是否发生了变化operation@Omar:验证@developmental是否指出了问题的出现,因为您正在递归调用该方法。如果它被调用一次,它可能会工作。。。