从键盘输入一个文件夹路径,统计该文件夹大小
- 解题步骤:
- 从键盘输入一个文件夹路径
- 1、创建键盘录入对象
- 2、定义一个无限循环,当录入错误用来循环输入
- 3、将键盘录入的结果存储并封装成file对象
- 4、对file对象进行判断
- 5、将文件夹路径对象返回
- 统计文件夹大小
- 1、定义一个求和变量
- 2、获取文件夹下所有的文件盒文件夹listFile()
- 3、遍历数组
- 4、判断是文件就计算大小
- 5、判断是文件夹就递归调用
package com.cn.heima;
import java.io.File;
import java.util.Scanner;
public class TjFile {
/**
* 需求:从键盘输入一个文件夹路径,统计该文件夹大小
* @param args
*/
public static void main(String[] args) {
File dir = getDir();
System.out.println(getFileLength(dir));
}
/**从键盘接收一个文件夹路径
* 1、返回值类型file
* 2、参数列表无
*/
public static File getDir() {
// *1、创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径");
// * 2、定义一个无限循环,当录入错误用来循环输入
// * 3、将键盘录入的结果存储并封装成file对象
// * 4、对file对象进行判断
while(true) {
String line = sc.nextLine();
File file = new File(line);
if(!file.exists()) {
System.out.println("您录入的文件夹路径不存在,请重新输入");
}else if(file.isFile()) {
System.out.println("您录入的是文件路径,请输入文件夹路径");
}else {
// * 5、将文件夹路径对象返回
return file;
}
}
}
public static long getFileLength(File file) {
// 统计文件夹大小
// * 1、定义一个求和变量
long len = 0;
// * 2、获取文件夹下所有的文件和文件夹listFile()
File[] subFiles = file.listFiles();
// * 3、遍历数组
// * 4、判断是文件就计算大小
for (File subfile : subFiles) {
if(subfile.isFile()){
len = len + subfile.length();
}else {
// * 5、判断是文件夹就递归调用
len = len + getFileLength(subfile);
}
}
return len;
}
}