这是创建java文件的正确方法(以编程方式)吗?

时间:2013-12-10 12:22:52

标签: java

以下是以编程方式创建java文件的代码

这是正确的方法吗?还是有其他方式

public static void main(String[] args) throws IOException {
        File atlas = new File("D:/WIP/pac/n/sample.txt");
        if (!atlas.exists()) {
            System.out.println("File not exist");
        }
        FileHandle mAtlasHandle = new FileHandle(atlas);
        BufferedReader reader = mAtlasHandle.reader(1024);
        String line = null;
        ArrayList<String> mArrayList = new ArrayList<String>();
        while ((line = reader.readLine()) != null) {
            mArrayList.add(line);
        }
        File file = new File("D:/WIP/pac/n/Sample.java");
        if (!file.exists()) {
            file.createNewFile();
        }
        String packageName = "package com.atom.lib;";
        PrintWriter writer = new PrintWriter(file);
        String mString = new String(file.getName());
        String name = mString.replaceFirst("[.][^.]+$", "");
        String output = Character.toUpperCase(name.charAt(0)) + name.substring(1);
        writer.println(packageName);
        writer.println("public class " + output);
        writer.println("{");
        for (String obj : mArrayList) {
            writer.println("public String  " + obj + "=\"" + obj + "\";");
        }
        writer.println("}");
        writer.close();
    }

2 个答案:

答案 0 :(得分:4)

是的,有更好的方法。使用CodeModel以编程方式创建Java文件,而不是使用println()或String附加方法。来自他们的网站:

  

CodeModel是代码生成器的Java库;它提供了一种以比PrintStream.println()更好的方式生成Java程序的方法。该项目是JAXB RI的衍生产品,用于其模式编译器生成Java源文件。

但CodelModel的主要问题是文档很少。 API文档是您可以拥有的唯一圣经。

如果您熟悉Eclipse插件开发,可以使用Eclipse's AST以编程方式创建Java文件。它甚至可以在没有Eclipse的情况下独立工作。

答案 1 :(得分:1)

我使用FreeMarker模板生成java源文件。这是一个非常强大的工具,允许您定义源模板和模型,您可以在其中定义变量,方法和所有内容,并允许您编译为任何多种格式(txt,java等)

您可以首先使用占位符为您所需的java源文件定义模板,然后您可以以编程方式应用占位符的值。

给出示例说明此API的工作,您可以扩展示例以创建java源文件 http://viralpatel.net/blogs/freemaker-template-hello-world-tutorial/