A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

从键盘接收一个文件夹路径,统计该文件夹大小
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);
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马