在前面我们已经学了利用File对文件的判断、创建、删除
那么我们应该如何在java中去遍历一个文件夹呢?
File类给我们提供了list()方法
- private static void list(File f) {
- String[] arr = f.list();
- for (String s : arr) {
- System.out.println(s);
- }
- }
它可以将所有的文件名、文件夹名以String的方式存储在数组中
并且在传入路径的时候,应该传入以文件夹结尾,不能以文件结尾,因为文件没有子文件
而且可以获取到隐藏文件哦~
输出:
aa
abc
b.txt
c.txt
这个方法局限于遍历名字,那么我们应该如何去操作每一个文件、文件夹呢?
File还有一个方法:
- private static void ListFiles(File f) {
- File[] listFiles = f.listFiles();
- for (File s : listFiles) {
- System.out.println(s);
- }
- }
这个方法获取到了每个文件、文件夹,然后封装为File类
当这个文件夹目录下没有任何文件、文件夹时,数组的长度是0
给定一个根目录,遍历这个目录下的全部文件、文件夹(递归遍历)
- private static void GetAllFile(File url) {
- System.out.println(url);
- File[] listFiles = url.listFiles();
- for (File lf : listFiles) {
- if (lf.isDirectory()) {
- GetAllFile(lf);
- } else {
- System.out.println(lf);
- }
- }
- }
若要指定输出某个文件类型,可以在输出的时候fl.toString一下,再进行判断
- private static void GetAllFile(File url) {
- // File[] listFiles = url.listFiles((File a) -> {
- // return true;
- // });
- File[] listFiles = url.listFiles();
- for (File lf : listFiles) {
- if (lf.isDirectory()) {
- GetAllFile(lf);
- } else {
- if (lf.toString().toLowerCase().endsWith(".java")) {
- System.out.println(lf);
- }
- }
- }
- }