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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 愤怒的大飞机 中级黑马   /  2017-1-11 23:27  /  768 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 愤怒的大飞机 于 2017-1-11 23:30 编辑

需求:计算一个文件夹的大小
File类中的方法
long
length()
          返回由此抽象路径名表示的文件的长度。
只能获取到文件的大小,不能获取到文件夹的大小(会随机返回一个值)
所以需要用递归方法来遍历,获取每个文件夹下的子文件
[Java] 纯文本查看 复制代码
package FileFilterDemo;

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

public class LengthDemo {
        static long ll = 0 ;
        public static void main(String[] args) {
                System.out.println("请输入要计算大小的文件夹路径");
                String s  = new Scanner(System.in).next();
                File file = new File(s);
                System.out.println("-----------------------");
                if (file.exists()) {
                        //注意长度是long类型,如果输入的文件夹下文件太大或者子文件夹太多,
                        //会导致递归调用过多,内存溢出
                        System.out.println("总大小为"+getLength(file)+"字节");
                        //返回的字节, /1024.0(自动类型提升为double)(KB)/1024(MB)/1024(GB),
                }else {
                        System.out.println("您输入的文件或者文件夹路径不存在!");
                }
        }
        private static long getLength(File file) {
                File [] files = file.listFiles();
                //遍历这个路径下的文件或文件夹
                for (File f : files) {
                        //如果是文件夹,递归调用
                        if (f.isDirectory()) {
                                System.out.println(f);
                                getLength(f);
                        }else {
                                //如果是文件,打印文件名,并获取文件的字节
                                System.out.println(f);
                                ll+= f.length();
                        }
                }
                return ll;
        }

}


2 个回复

倒序浏览
学习学习.
回复 使用道具 举报
一片叶~ 发表于 2017-1-13 23:00
学习学习.

共同学习,今天学习fileinputstream,尝试写一个可以复制的多层文件夹的文件,但是失败了。。。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马