// 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();