利用File类遍历指定目录下的所有文件
利用File类遍历指定目录下的所有文件
答案
import java.io.File;
public class FileTraversal {
public static void main(String[] args) {
String path = "test"; // 指定目录路径
File dir = new File(path);
// 1. 只遍历当前目录下的文件和文件夹
System.out.println("=== 单层遍历 ===");
listCurrentDir(dir);
// 2. 递归遍历所有子目录下的文件
System.out.println("\n=== 递归遍历所有文件 ===");
listAllFiles(dir);
}
/**
* 只遍历当前目录下的内容(不进入子目录)
*/
public static void listCurrentDir(File dir) {
if (!dir.exists()) {
System.out.println("目录不存在:" + dir.getAbsolutePath());
return;
}
if (!dir.isDirectory()) {
System.out.println("这不是一个目录:" + dir.getAbsolutePath());
return;
}
File[] files = dir.listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
System.out.println("[文件夹] " + f.getName());
} else {
System.out.println("[文件] " + f.getName());
}
}
}
}
/**
* 递归遍历目录及其所有子目录下的文件
*/
public static void listAllFiles(File dir) {
if (!dir.exists() || !dir.isDirectory()) {
System.out.println("无效的目录:" + dir.getAbsolutePath());
return;
}
File[] files = dir.listFiles();
if (files == null) return;
for (File f : files) {
if (f.isDirectory()) {
// 是目录,递归进入
listAllFiles(f);
} else {
// 是文件,直接输出绝对路径
System.out.println(f.getAbsolutePath());
}
}
}
}