QuYueTing há 5 meses atrás
pai
commit
4e7a829ee7

+ 100 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/JavaFileProcessor.java

@@ -0,0 +1,100 @@
+package com.management.platform.util;
+
+import java.io.*;
+import java.nio.file.*;
+import java.util.*;
+import java.util.regex.*;
+import java.util.Scanner;
+
+public class JavaFileProcessor {
+
+    public static void main(String[] args) {
+        // 使用 Scanner 从控制台读取文件目录路径和输出文件路径
+        Scanner scanner = new Scanner(System.in);
+        System.out.print("请输入要处理的文件夹路径: ");
+        String directoryPath = scanner.nextLine();  // 读取输入的目录路径
+        System.out.print("请输入输出文件的路径: ");
+        String outputFilePath = scanner.nextLine();  // 读取输入的输出文件路径
+
+        try {
+            String fileName = System.currentTimeMillis() + ".txt";
+            List<String> allFiles = getJavaFiles(directoryPath );
+            List<String> combinedLines = new ArrayList<>();
+
+            // 合并所有 Java 文件的有效代码
+            for (String filePath : allFiles) {
+                combinedLines.addAll(processJavaFile(filePath));
+            }
+
+            // 获取合并后的前1500行和后1500行
+            List<String> finalLines = getFinalLines(combinedLines);
+
+            // 输出到文件
+            BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath + File.separator + fileName));
+            for (String line : finalLines) {
+                writer.write(line);
+                writer.newLine();
+            }
+
+            writer.close();
+            System.out.println("处理完成,输出已保存至 " + outputFilePath);
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            scanner.close();
+        }
+    }
+
+    // 获取指定目录下所有的 Java 文件
+    private static List<String> getJavaFiles(String directoryPath) throws IOException {
+        List<String> javaFiles = new ArrayList<>();
+        Files.walk(Paths.get(directoryPath))
+                .filter(p -> p.toString().endsWith(".java"))
+                .forEach(p -> javaFiles.add(p.toString()));
+        return javaFiles;
+    }
+
+    // 处理每个 Java 文件,读取有效的代码行(去掉空行和版权信息)
+    private static List<String> processJavaFile(String filePath) throws IOException {
+        List<String> lines = Files.readAllLines(Paths.get(filePath));
+        List<String> filteredLines = new ArrayList<>();
+
+        for (String line : lines) {
+            // 排除空行和包含版权/作者信息的行
+            if (line.trim().isEmpty() || isAuthorOrCopyrightLine(line)) {
+                continue;
+            }
+            filteredLines.add(line);
+        }
+        return filteredLines;
+    }
+
+    // 获取合并后的前1500行和后1500行
+    private static List<String> getFinalLines(List<String> combinedLines) {
+        int totalLines = combinedLines.size();
+        int start = Math.min(1500, totalLines);  // 前1500行
+        int end = totalLines;
+        int endStart = Math.max(totalLines - 1500, start);  // 后1500行
+
+        List<String> finalLines = new ArrayList<>();
+        // 添加前1500行
+        for (int i = 0; i < start; i++) {
+            finalLines.add(combinedLines.get(i));
+        }
+        // 添加后1500行
+        for (int i = endStart; i < end; i++) {
+            finalLines.add(combinedLines.get(i));
+        }
+        return finalLines;
+    }
+
+    // 判断是否为版权、作者等信息的行
+    private static boolean isAuthorOrCopyrightLine(String line) {
+        // 用正则匹配常见的作者、版权、创建时间等信息
+        String regex = "(?i)(author|copyright|created|date|version|license)";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(line);
+        return matcher.find();
+    }
+}