0、展示效果
1、文档
ONE,code1,1,描述1
two,code2,2,描述2
THREE,code3,3,描述3
2、工具类
package com.lfsun.generator.util;import java.io.*;/*** 枚举类生成器*/
public class EnumGenerator {private static final String MODULE_NAME = "lfsun-study-generator"; // 替换为实际的模块名private static final String PACKAGE_NAME = "com.lfsun.generator.enums"; // 替换为实际的包名private static final String ENUM_NAME = "MyCustomEnum"; // 替换为实际的类名private static final String FILE_PATH = "document.txt"; // 替换为实际文档路径 当前为 resources目录下private static final String[] FIELD_NAMES = {"code", "seq", "description"}; // 替换为实际的 字段名public static void main(String[] args) {try (BufferedReader br = getResourceBufferedReader(FILE_PATH);BufferedWriter writer = createJavaFileWriter(PACKAGE_NAME, ENUM_NAME)) {// 输出枚举类的头部writer.write("package " + PACKAGE_NAME + ";\n\n");writer.write("import lombok.AllArgsConstructor;\n");writer.write("import lombok.Getter;\n\n");writer.write("@Getter\n");writer.write("@AllArgsConstructor\n");writer.write("public enum " + ENUM_NAME + " {\n");String line;while ((line = br.readLine()) != null) {String[] parts = line.split(",");generateEnumValue(parts, writer);}// 输出枚举类的结尾writer.write(" ;\n"); // 注意这里加上分号writer.write("\n");// 枚举值定义for (String fieldName : FIELD_NAMES) {writer.write(" private final String " + fieldName + ";\n");}writer.write("}\n");} catch (IOException e) {e.printStackTrace();}}private static void generateEnumValue(String[] parts, BufferedWriter writer) throws IOException {if (parts.length >= FIELD_NAMES.length) {// 输出枚举值的定义writer.write(" " + parts[0].toUpperCase() +"(\"" + parts[1] + "\", \"" + parts[2] + "\", \"" + parts[3] +"\"),\n");} else {System.err.println("Invalid line format: " + String.join(",", parts));}}private static BufferedReader getResourceBufferedReader(String resourcePath) throws IOException {// 使用ClassLoader获取资源的输入流InputStream inputStream = EnumGenerator.class.getClassLoader().getResourceAsStream(resourcePath);if (inputStream != null) {return new BufferedReader(new InputStreamReader(inputStream));} else {throw new IOException("Resource not found: " + resourcePath);}}private static BufferedWriter createJavaFileWriter(String packageName, String enumName) throws IOException {String packagePath = packageName.replace('.', '/');String filePath = MODULE_NAME + "/src/main/java/" + packagePath + "/" + enumName + ".java";File file = new File(filePath);// 创建文件及其父目录file.getParentFile().mkdirs();FileWriter fileWriter = new FileWriter(file);return new BufferedWriter(fileWriter);}
}