java追加到文件

时间:2008-12-15 21:25:04

标签: java xml xslt jaxp transformer

我用谷歌搜索了一段时间,但似乎无法找到它,它应该很容易。我想将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();

5 个答案:

答案 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序列号相同的字符编码来编写换行符,否则您的文件将被破坏。

相关问题