实现逻辑:
-
实例化file对象,指明要操作的文件路径
-
判断该路径下是否有文件
-
获取该文件下的所有文件或文件目录的File数组
-
判断文件是否为空
-
如果为空,直接返回
-
如果不为空,利用foreach循环遍历,判断是文件还是文件夹
-
如果是文件夹,获取该文件夹的绝对路径,进行递归调用
-
如果是文件,获取该文件的绝对路径
代码实现
/**
* Java中使用递归方法遍历文件夹下的所有文件
*/
public class FileTraverse {
public static void main(String[] args) {
//文件夹路径
String path = "D:\\文档\\Java资料";
traverseFolder(path);
}
/**
* 遍历文件
*
* @param path 文件路径
*/
private static void traverseFolder(String path) {
// 实例化file对象,指明要操作的文件路径
File file = new File(path);
// 判断是否有文件
if (file.exists()) {
// 获取该目录下的所有文件或者文件目录的File数组
File[] files = file.listFiles();
// 判断文件是否为空
if (null == files || files.length == 0) {
System.out.println("文件夹是空的!");
return;
} else {
// 利用foreach 进行循环遍历
for (File f : files) {
// 判断是文件还是文件夹
if (f.isDirectory()) {
// (getAbsolutePath())获取文件绝对路径
System.out.println("文件夹:" + f.getAbsolutePath());
// 递归调用
traverseFolder(f.getAbsolutePath());
} else {
System.out.println("文件:" + f.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
}