从键盘接收一个文件夹路径,统计该文件夹大小
package com.heima.test;
/*
思路:
1.输入一个文件夹路径
2.判断输入内容是否是文件夹
3.判断文件夹内是否还有文件夹,如果是文件就计算该文件大小,如果是文件夹就递归调用
4.统计变量记录所有文件大小
5.打印统计变量
*/
import java.util.ArrayList;
import java.util.List;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class HomeWork {
public static void main(String[] args) throws IOException {
File f=method();
list(f);
}
public static File method() {
Scanner sc=new Scanner(System.in); //创建录入对象
String s=sc.nextLine();
File file=new File(s); //创建文件对象
while(true) {
if(!file.exists()) {
System.out.println("不存在"); //判断该文件是否存在
}else if(file.isFile()) {
System.out.println("输入的是文件"); //判断该文件是否是文件
}else {
return file; //将文件夹返回
}
}
}
public static void method1(File f,List l) {
File[] arr=f.listFiles(); //将文件转成文件数组
for (File file : arr) { //遍历文件数组
if(file.isFile()) { //判断如果file是文件就添加到l集合中
l.add(file);
} else if(file.isDirectory()) { //如果file是文件夹
File f1=new File(f,file.getName()); //将method1传入的对象引用和file的对象名传入新的文件对象中
method1(f1,l); //递归
}
}
}
public static void list(File f) {
List<File> l=new ArrayList<>(); //创建集合对象
int count=0; //给定一个计算变量
method1(f,l); //调用方法
for (File file : l) { //遍历集合
count+=file.length(); //累加每个文件的长度
}
System.out.println(count);
}
}
|
|