黑马程序员技术交流社区

标题: 从键盘接收一个文件夹路径,统计该文件夹大小 [打印本页]

作者: hello008    时间: 2015-12-18 22:56
标题: 从键盘接收一个文件夹路径,统计该文件夹大小
从键盘接收一个文件夹路径,统计该文件夹大小
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);
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2