大ge们 来复习File

问题遇到的现象和发生背景

// 3. 遍历指定目录所有文件名称,包括子文件目录中的文件。
// 拓展1:并计算指定目录占用空间的大小

无论文件大小是多少 都返回0

用代码块功能插入代码,请勿粘贴截图
public static long iterator(File file){

        // 返回该count 表示file文件目录下 所有文件的大小的总和
        long count = 0;
        // 判断file是否是文件目录
        boolean directory = file.isDirectory();

        if(directory){
            File[] files = file.listFiles();

            for (File file1 : files) {
                iterator(file1);
            }

        }else {
            // 判断每一个files是否是文件
            boolean b = file.isFile();

            if(b){
                long length = file.length();
                System.out.println(length);
                count = count + length;

                System.out.println(file);
            }
        }

        return count;
    }

运行结果及报错内容
**************************
0
D:\io\file\heng\shuai\shuaige.jpg
0
D:\io\file\heng\shuai.jpg
0
D:\io\file\heng.jpg
11
D:\io\file\ke.txt
0
D:\io\file\yang.jpg
7

Process finished with exit code 0


我的解答思路和尝试过的方法

count = 7; 是我设置的便于观察的一个数字

我想要达到的结果

return 返回 应该是11

你的count是个局部变量,而你在递归,所以返回的时候之前加的count都丢弃了
count = count + length;这句代码没有意义,根本没有循环,count一直都是初始为0的,直接写count=length就行了
要么把count设置成全局变量,要么写
count+=iterator(file1);

可以使用readAttributes方法。
Files.readAttributes();