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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LShu 中级黑马   /  2016-9-6 16:58  /  300 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* 使用键盘录入一个文件路径,并统计文件路径中所有文件的大小
*
* 分析:
* 1,创建一个键盘录入对象
* 2,使用while无限循环
* 3,将键盘录入的文件路径存放到一个File文件中
* 4,判断录入的文件是否是一个文件夹路径
*                 是:返回这个文件夹路径
*                 否:判断这个路径是否存在,如果存在就判断是否是一个文件路径,都给予提示
* 5,定义一个获取所有文件长度的方法
* 6,定义一个长度变量
* 7,将获取到的文件和文件夹存放到一个File[]数组中
* 8,遍历数组,判断这个File[]数组中存放的是否是文件
*                 是:将其长度统计
*                 否:进行递归调用,获取文件夹中文件
* 9,返回所有文件的长度
*/
package com.heima.practise;

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

public class Test01 {
        public static void main(String[] args) {
                File dir = getDir();
                long length = getFileLongth(dir);
                System.out.println(length);
        }
       
        //定义一个获取文件夹路径的方法
        public static File getDir() {
                //1,创建一个键盘录入对象
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个文件夹路径:");
                //2,使用while无限循环
                while(true){
                        //3,将键盘录入的文件路径存放到一个File文件中
                        String line = sc.nextLine();
                        File dir = new File(line);
                        /*
                         * 4,判断录入的文件是否是一个文件夹路径
                         *                 是:返回这个文件夹路径
                         *                 否:判断这个路径是否存在,如果存在就判断是否是一个文件路径,都给予提示
                         */
                        if (!dir.exists()) {
                                System.out.println("您输入的是一个文件夹路劲,请输入一个文件夹路径:");
                        }else if (dir.isFile()) {
                                System.out.println("您输入的是一个文件路径,请重新输入一个文件夹路径:");
                        }else {
                                return dir;
                        }
                }
        }
       
        //5,定义一个获取所有文件长度的方法
        public static long getFileLongth(File dir) {
                //6,定义一个长度变量
                long len = 0;
                // 7,将获取到的文件和文件夹存放到一个File[]数组中
                File[] arr = dir.listFiles();
                /*
                 *  8,遍历数组,判断这个File[]数组中存放的是否是文件
                 *                 是:将其长度统计
                 *                 否:进行递归调用,获取文件夹中文件
                 */
                        for (File file : arr) {
                                if (file.isFile()) {
                                        len = len + file.length();
                                }else {
                                        //判断是否是一个隐藏的文件或者是一个隐藏的文件夹
                                        if (file.isHidden()) {
                                                System.out.println(file.getName() + "是一个隐藏的文件或者文件夹");
                                                //停止本次的for循环,继续下一次的for循环
                                                continue;                       
                                        }
                                        len = len + getFileLongth(file);
                                }
                        }
                //9,返回所有文件的长度
                return len;
        }
}


0 个回复

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