項目中常需要遍歷某個目錄及其子目錄,列出所有文件與文件夾的絕對路徑,例如構建文件索引、批量處理文件等。
import java.io.*;
public class ListFiles {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("請輸入目錄路徑:");
String dirPath = in.readLine();
getFileList(dirPath);
in.close();
}
public static void getFileList(String directory) {
File dir = new File(directory);
if (!dir.exists() || !dir.isDirectory()) {
System.out.println("路徑無效或不是目錄:" + directory);
return;
}
File[] files = dir.listFiles();
if (files == null) return;
for (File f : files) {
if (f.isFile()) {
System.out.println("文件:" + f.getAbsolutePath());
} else {
System.out.println("目錄:" + f.getAbsolutePath());
getFileList(f.getAbsolutePath()); // 遞歸遍歷子目錄
}
}
}
}
File.listFiles() 返回目錄下所有文件與子目錄數組。isFile() / isDirectory() 區分類型。getFileList(f.getAbsolutePath()) 實現深度遍歷。IOException、空指針防護。Files.walkFileTree 實現非遞歸、更高效的遍歷。List<File> 而非直接打印,便於後續處理。