JAVA 遍历文件夹下的所有文件

JAVA遍历文件下的所有文件和文件夹

@Test
    public void traverseFolder1( ) {
        String path = "D:\\TEST";
        int fileNum = 0;
        int folderNum = 0;
        int foldeNum = 0;
        File file = new File(path);
        if (file.exists()) {
            LinkedList<File> list = new LinkedList<File>();

            //list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组

            //listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组
            File[] files = file.listFiles();
            for (File file2 : files) {
                if (file2.isDirectory()) {
                    System.out.println("文件夹:" + file2.getAbsolutePath());
                    list.add(file2);
                    foldeNum++;
                } else {
                    System.out.println("文件:" + file2.getAbsolutePath());
                    fileNum++;
                }
            }
            File temp_file;
            while (!list.isEmpty()) {
                temp_file = list.removeFirst();//删除第一个元素,也就是找到数组中的第一个元素返回一个File去判断,说白了就是循环分别找到每个文件下面对应的是文件还是文件夹,如果循环下一级还是文件夹则继续循环直到结束(思想就是一层一层去判断查找知道找到所有的文件和文件夹,不明白看下面的例子。)
                files = temp_file.listFiles();
                for (File file2 : files) {
                    if (file2.isDirectory()) {//如果是个目录(文件夹)则返回true
                        System.err.println("文件夹:" + file2.getAbsolutePath());
                        list.add(file2);
                        folderNum++;
                    } else {//输出文件
                        System.out.println("文件:" + file2.getAbsolutePath());//返回文件的完整路径。
                        fileNum++;
                    }
                }
            }
        } else {
            System.out.println("文件不存在!");
        }
        System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
    }

 例子:

LinkedList list=new LinkedList();
list.add("a");
list.add(1);
list.add('b');
String kk=(String) list.removeFirst(); // (String) 这代表强制转换 原理同上
char   k=(char) list.removeLast();//删除最后一个元素
System.out.println(kk);
System.out.println(k);
}
}
结果为 a     b

//使用递归

 

public void traverseFolder2(String path) {

        File file = new File(path);
        if (file.exists()) {
            File[] files = file.listFiles();
            if (null == files || files.length == 0) {
                System.out.println("文件夹是空的!");
                return;
            } else {
                for (File file2 : files) {
                    if (file2.isDirectory()) {
                        System.out.println("文件夹:" + file2.getAbsolutePath());
                        traverseFolder2(file2.getAbsolutePath());
                    } else {
                        System.out.println("文件:" + file2.getAbsolutePath());
                    }
                }
            }
        } else {
            System.out.println("文件不存在!");
        }
    }

 

复制代码

 

posted on 2019-03-11 09:51  UnmatchedSelf  阅读(10831)  评论(0编辑  收藏  举报

导航