在前面我们已经学了利用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);
}
}
}
}