注解处理器:从process()方法写入文件
Annotation processor: file writing from the process() method
我写了一个注释处理器,我想将一些信息写入文本文件。在我的 class 中,我扩展了 AbstractProcessor
并覆盖了
public void init(ProcessingEnvironment processingEnv)
和
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv)
方法。
在 init()
方法中,我正在创建一个新的 PrintWriter
(例如,这样:writer = new PrintWriter("output.csv", "UTF-8");
)
我用 process()
方法将一些文本打印到文件中。
问题 是,(当我在不同包中的多个源上使用我的处理器时)文件 (output.csv
) 总是在新源被重新创建时重新创建正在处理(因为每次都会创建一个新的 Processor 对象)。这样只有最后处理的源信息进入文本文件,虽然我想从 all 注释方法(来自不同来源)获取信息到 one 文本文件。
这可能对您有帮助:
new PrintWriter(new FileOutputStream("output.csv", true));
我写了一个注释处理器,我想将一些信息写入文本文件。在我的 class 中,我扩展了 AbstractProcessor
并覆盖了
public void init(ProcessingEnvironment processingEnv)
和
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv)
方法。
在 init()
方法中,我正在创建一个新的 PrintWriter
(例如,这样:writer = new PrintWriter("output.csv", "UTF-8");
)
我用 process()
方法将一些文本打印到文件中。
问题 是,(当我在不同包中的多个源上使用我的处理器时)文件 (output.csv
) 总是在新源被重新创建时重新创建正在处理(因为每次都会创建一个新的 Processor 对象)。这样只有最后处理的源信息进入文本文件,虽然我想从 all 注释方法(来自不同来源)获取信息到 one 文本文件。
这可能对您有帮助:
new PrintWriter(new FileOutputStream("output.csv", true));