黑马程序员技术交流社区

标题: 递归方法的应用 [打印本页]

作者: 愤怒的大飞机    时间: 2017-1-11 23:27
标题: 递归方法的应用
本帖最后由 愤怒的大飞机 于 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;
        }

}



作者: 一片叶~    时间: 2017-1-13 23:00
学习学习.
作者: 愤怒的大飞机    时间: 2017-1-13 23:05
一片叶~ 发表于 2017-1-13 23:00
学习学习.

共同学习,今天学习fileinputstream,尝试写一个可以复制的多层文件夹的文件,但是失败了。。。





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