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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© marsfan 中级黑马   /  2016-10-18 19:43  /  1302 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.heima.test;

import java.io.File;
import java.util.Scanner;

public class Test1 {

        /**
         * @param args
         * 需求:1,从键盘接收一个文件夹路径,统计该文件夹大小
         *
         * 从键盘接收一个文件夹路径
         * 1,创建键盘录入对象
         * 2,定义一个无限循环
         * 3,将键盘录入的结果存储并封装成File对象
         * 4,对File对象判断
         * 5,将文件夹路径对象返回
         *
         * 统计该文件夹大小
         * 1,定义一个求和变量
         * 2,获取该文件夹下所有的文件和文件夹listFiles();
         * 3,遍历数组
         * 4,判断是文件就计算大小并累加
         * 5,判断是文件夹,递归调用
         */
        public static void main(String[] args) {
                //File dir = new File("F:\\day06");
                //System.out.println(dir.length());                                //直接获取文件夹的结果是0
                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,定义一个无限循环
                while(true) {
                        //3,将键盘录入的结果存储并封装成File对象
                        String line = sc.nextLine();
                        File dir = new File(line);
                        //4,对File对象判断
                        if(!dir.exists()) {
                                System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:");
                        }else if(dir.isFile()) {
                                System.out.println("您录入的是文件路径,请输入一个文件夹路径:");
                        }else {
                                //5,将文件夹路径对象返回
                                return dir;
                        }
                }
               
        }
       
        /*
         * 统计该文件夹大小
         * 1,返回值类型long
         * 2,参数列表File dir
         */
        public static long getFileLength(File dir) {        //dir = F:\day06\day07
                //1,定义一个求和变量
                long len = 0;
                //2,获取该文件夹下所有的文件和文件夹listFiles();
                File[] subFiles = dir.listFiles();                        //day07 Demo1_Student.class Demo1_Student.java
                //3,遍历数组
                for (File subFile : subFiles) {
                        //4,判断是文件就计算大小并累加
                        if(subFile.isFile()) {
                                len = len + subFile.length();
                        //5,判断是文件夹,递归调用
                        }else {
                                len = len + getFileLength(subFile);
                        }
                }
                return len;
        }
}

1 个回复

倒序浏览
我认为在遍历subFile之前要先判断其是否为空
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马