我用谷歌搜索了一段时间,但似乎无法找到它,它应该很容易。我想将CR附加到我用Transformer创建的XML文件的末尾。有没有办法做这个>
我尝试了以下操作,但这导致了一个空白文件?
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "file:///ReportWiz.dtd");
xformer.transform(source, result);
OutputStream writer = new FileOutputStream(file);
Byte b = '\n';
writer.write(b);
writer.close();
答案 0 :(得分:10)
简单...只需添加append选项:
new FileOutputStream(f, true /* append */);
答案 1 :(得分:5)
这里有几个选项。
我假设您使用StreamResult
指定目标文件路径创建的结果是String
。您可以考虑自己打开FileOutputStream
,并用此构建StreamResult
。然后,当变换器完成后,附加行终止符,刷新并关闭流。如果没有其他限制,我会使用这种方法。
如果要重新打开文件,如问题所示,则需要使用带有可选append
参数的FileOutputStream
构造函数。将其设置为true
,以避免破坏刚刚完成的转换结果。
您还可以探索在转换中设置indent
输出属性,或直接在模板中包含必要的行终止符。
答案 2 :(得分:1)
显而易见的答案是将StreamResult与Writer一起使用,并在关闭之前将你的角色附加到作家。
您似乎正在尝试重新打开该文件以附加该字符。 FileOutputStream
构造函数的两个参数形式包括一个追加标记。
答案 3 :(得分:0)
我不知道这个Transformer类。但是我看到你的编写器/文件变量和你的xformer / source / result变量之间没有任何联系......看起来你只写了一个换行符。
除非你省略了一些重要的部分。
答案 4 :(得分:0)
一个注意事项,请确保使用与xml序列号相同的字符编码来编写换行符,否则您的文件将被破坏。