import java.io.*;
import java.util.*;
public class IOTest {
public static void main(String[] args) throws Exception {
File root = new File("E:/");
List<File> result = new ArrayList<>();
collectJavaFiles(root, result);
persistToFile(result, "E:/log.txt");
}
// 遞歸收集 .java 文件
public static void collectJavaFiles(File dir, List<File> collector) {
File[] files = dir.listFiles();
if (files == null) return; // 無權限或非目錄
for (File f : files) {
if (f.isDirectory()) {
collectJavaFiles(f, collector); // 遞歸進入子目錄
} else if (f.getName().endsWith(".java")) {
collector.add(f); // 滿足條件加入集合
}
}
}
// 緩衝寫入文件,每行一個絕對路徑
public static void persistToFile(List<File> files, String outPath) throws IOException {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(outPath))) {
for (File f : files) {
bw.write(f.getAbsolutePath());
bw.newLine();
}
}
}
}
掃描 E 盤約 2.6 萬行代碼,耗時僅幾秒。輸出文件每行一個完整路徑,便於後續批量處理(編譯、靜態分析、統計)。
