import java.io.File;
import java.util.Scanner;
public class Test1 {
/**
* 根据键盘录入文件夹路径,求文件夹大小! 思路:\分两步\ 第一步: 键盘录入.
*
* (方法名定义为dun ,dun对象的返回值类型是File 参数类型为空.)
* 1.创建键盘录入对象;
* 2.根据录入的信息进行判断;
* 3.判断是文件夹路径时返回File的参数.
* 第二步: 求文件夹的大小.
* 1.创建求文件夹大小的方法.(定义方法名为fun,返回值类型是long(因为file类下的length方法返回值类型是long),参数类型是File dir类型)
* 2.定义一个参数 len,这个参数是用来统计各个文件大小总和的.
* 3.获取该文件夹下的所有文件夹和文件
* 4.遍历并判断是否是文件,如果是就计算大小,并用 len记录下来.如果不是,就使用递归的思想来递归调用
* 5.返回 len的值
* 6.在main方法中调用这两个方法.
*/
public static void main(String[] args) {
// 6.在main方法中调用这两个方法.
File dir = dun();
System.out.println("这个文件夹大小是 " + fun(dir) + "个字节.");
}
// (方法名定义为dun ,dun对象的返回值类型是File 参数类型为空.)
public static File dun() {
// 1.创建键盘录入对象;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径:");
while (true) {
String line = sc.nextLine();
File dir = new File(line); // 创建file对象.将line的数据传进去.
// 2.根据录入的信息进行判断;
if (!dir.exists()) {
System.out.println("您输入的文件夹路径不存在,请输入文件夹路径:");
} else if (dir.isFile()) {
System.out.println("您输入的是文件路径,请输入文件夹路径:");
} else {
return dir;
}
}
}
// 1.创建求文件夹大小的方法.(定义方法名为fun,返回值类型是long(因为file类下的length方法返回值类型是long),参数类型是File
// dir类型)
public static long fun(File dir) {
// 定义一个参数 len,这个参数是用来统计各个文件大小总和的.
long len = 0;
// *3.获取该文件夹下的所有文件夹和文件
File[] file = dir.listFiles();
// 遍历.
for (File file2 : file) {
// 4.遍历并判断是否是文件,如果是就计算大小,并用 len记录下来.
if (file2.isFile()) {
len = len + file2.length();
}
// 如果不是,就使用递归的思想来递归调用
else {
len = len + fun(file2);
}
}
// 5.返回 len的值
return len;
}
}
|