1.代码展示
package cn.shun;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.concurrent.atomic.AtomicInteger;
public class Ex02 {
public static int count;
public static void main(String[] args) {
ok(new File(System.getProperty("user.dir")), new File("allCode.txt"));
}
public static void ok(File file, File dst) {
if (file.isDirectory()) {
for (File f : file.listFiles()) {
if (f.isDirectory()) {
ok(f, dst);
} else if (f.isFile() && f.getName().endsWith(".java")) {
count++;
add(f, dst, count);
}
}
}
if (file.isFile() && file.getName().endsWith(".java")) {
add(file, dst, 1);
}
}
public static void add(File file, File dst, int count) {
String txt = """
--------------------------------------------------------
No.%d
文件名:%s
行数:%d
时间:%tF %<tT
路径:%s
--------------------------------------------------------
%s
""";
try (var fis = new FileInputStream(file); var fos = new FileOutputStream(dst, true)) {
String src = new String(fis.readAllBytes());
StringBuilder builder = new StringBuilder();
AtomicInteger num = new AtomicInteger(1);
src.lines().forEach(row -> {
builder.append(String.format("%d %s\n", num.getAndIncrement(), row));
});
builder.append("\r\n\r\n");
String ok = String.format(txt, count, file.getName(), src.lines().count(), file.lastModified(), file.getAbsoluteFile(), builder);
fos.write(ok.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.效果如下
