本帖最后由 愤怒的大飞机 于 2017-1-11 23:30 编辑
需求:计算一个文件夹的大小
File类中的方法long | length()
返回由此抽象路径名表示的文件的长度。
| 只能获取到文件的大小,不能获取到文件夹的大小(会随机返回一个值)
所以需要用递归方法来遍历,获取每个文件夹下的子文件
[Java] 纯文本查看 复制代码 package FileFilterDemo;
import java.io.File;
import java.io.FileFilter;
import java.util.Scanner;
public class LengthDemo {
static long ll = 0 ;
public static void main(String[] args) {
System.out.println("请输入要计算大小的文件夹路径");
String s = new Scanner(System.in).next();
File file = new File(s);
System.out.println("-----------------------");
if (file.exists()) {
//注意长度是long类型,如果输入的文件夹下文件太大或者子文件夹太多,
//会导致递归调用过多,内存溢出
System.out.println("总大小为"+getLength(file)+"字节");
//返回的字节, /1024.0(自动类型提升为double)(KB)/1024(MB)/1024(GB),
}else {
System.out.println("您输入的文件或者文件夹路径不存在!");
}
}
private static long getLength(File file) {
File [] files = file.listFiles();
//遍历这个路径下的文件或文件夹
for (File f : files) {
//如果是文件夹,递归调用
if (f.isDirectory()) {
System.out.println(f);
getLength(f);
}else {
//如果是文件,打印文件名,并获取文件的字节
System.out.println(f);
ll+= f.length();
}
}
return ll;
}
}
|