黑马程序员技术交流社区

标题: IO流:从键盘接收一个文件夹路径,把文件夹中的所有文件以... [打印本页]

作者: gaofengdage    时间: 2016-8-16 21:02
标题: IO流:从键盘接收一个文件夹路径,把文件夹中的所有文件以...
public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入你需要查看的文件夹路径");
                String path = sc.nextLine();
                String recognizer = "";        //识别器
                int count = 1;                        //计数器
               
                iterator(new File(path),path,recognizer,count);
        }

        public static void iterator(File file,String path,String recognizer,int count) {
                ArrayList<String> list = new ArrayList<String>();
                int en = 0;//这里加了这个计数器,是为了让文件与文件夹之间会空格区分(不知道这样的效果好不好)
                if (file.isDirectory()) {
                        System.out.println(recognizer + file.getName() + "......第" + count++ + "级文件夹");
                        recognizer = recognizer + "\t";
                       
                        String[] str = file.list();
                       
                       
                        for (String string : str) {
                                String repath = path + "\\" + string;
                                if (new File(repath).isDirectory()) {
                                        list.add(repath);
                                        continue;
                                }else{
                                        iterator(new File(repath),repath,recognizer,count);
                                        en++;
                                }
                                /*String repath = path + "\\" + string;
                                iterator(new File(repath),repath,recognizer);*/
                        }
                        if (en > 0) {
                                System.out.println("");
                        }//计数器的作用,如果有文件,就会大于0,就会执行,如果没有文件,只有文件夹就不会执行了
                       
                }else{
                        System.out.println( recognizer + file.getName() + "文件");
                        return;//加此语句结束方法,防止传入进来的是文件,执行了下面的for语句
                }
//                System.out.println("");
                for (String string : list) {
                        iterator(new File(string),string,recognizer,count);
                }
        }

}
作者: gaofengdage    时间: 2016-8-16 21:04
//这是输出的结果:
请输入你需要查看的文件夹路径
F:\笔记\receive
receive......第1级文件夹
        Child.class文件
        Child.java文件
        Demo1$1.class文件
        Demo1.class文件
        Demo1.java文件
        Demo1_Package.java文件
        Demo2.class文件
        Demo2.java文件
        Face.class文件
        Inter.class文件
        Node.class文件
        Outer$1.class文件
        Outer$Inner.class文件
        Outer.class文件
        Parent.class文件
        Person.java文件
        Single_Class.class文件
        Single_Class.java文件

        com......第2级文件夹
                baidu......第3级文件夹
                        Person.class文件

                google......第3级文件夹
                        Person.class文件

                heima......第3级文件夹
                        Demo1_Package.class文件

        test......第2级文件夹
        老师的代码......第2级文件夹
                Demo1.java文件





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