我有一个 StringWriter 变量 sw
,它由 FreeMarker 模板填充。填充 sw
后,如何将其打印到文本文件?
我有一个 for 循环如下:
for(2 times)
{
template.process(data, sw);
out.println(sw.toString());
}
现在,我只是输出到屏幕上。我如何为文件执行此操作?我想在每个循环中,我的 sw
都会发生变化,但我希望每个循环中的数据都附加到文件中。
编辑:
我尝试了下面的代码。当它运行时,它确实显示 file.txt
已被更改,但当它重新加载时,文件中仍然没有任何内容。
sw.append("CheckText");
PrintWriter out = new PrintWriter("file.txt");
out.println(sw.toString());
最佳答案
怎么样
FileWriter fw = new FileWriter("file.txt");
StringWriter sw = new StringWriter();
sw.write("some content...");
fw.write(sw.toString());
fw.close();
您还可以考虑使用一个输出流,您可以直接将其传递给 template.process(data, os);
而不是先写入 StringWriter,然后再写入文件。
查看 template.process(...)
的 API 文档,了解是否有这样的工具可用。
回复2
template.process(Object, Writer)
也可以将 FileWriter 对象作为参数,它是 Writer 的子类,所以你可能可以这样做:
FileWriter fw = new FileWriter("file.txt");
for(2 times)
{
template.process(data, fw);
}
fw.close();
关于java - 从 StringWriter 写入 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883294/