我有一个包含多行的字符串,如下所示
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book publishyear="1990">
<name>Harry Potter</name>
</book>
</books>
如何将其写入文件?我尝试过使用缓冲编写器,但它不会在多行中使用字符串。
try{
FileWriter fstream = new FileWriter("D:/temp.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(" <?xml version="1.0" encoding="UTF-8"?>
<books>
<book publishyear="1990">
<name>Harry Potter</name>
</book>
</books>");
out.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
答案 0 :(得分:5)
永远不要手动编写XML文档。您将无法进行文件编码,语法错误将失败。始终使用DOM矿石类似的东西。您的演示代码已包含错误。
答案 1 :(得分:3)
这与编写字符串或BufferedWriter无关。
Java没有多行字符串,因此如果您希望在源代码中的多行上使用它们,则必须连接字符串。您还需要使用转义的\ n字符替换实际换行符,并转义“with \”
也就是说,你这样做:
String foo = "<?xml version="1.0" encoding=\"UTF-8\"?>\n"+
"<books>\n"+
" <book publishyear=\"1990\">\n"+
" <name>Harry Potter</name>\n"+
" </book>\n"+
"</books>";
out.write(foo);
如果您愿意,也可以在源代码的一行中写下所有内容:
out.write("<?xml version="1.0" encoding=\"UTF-8\"?>\n<books>\n ... etc.etc."));
答案 2 :(得分:0)
您应该转义引号并使用PrintWriter,它提供了println方法。
PrintWriter out = new PrintWriter(new BufferedWriter(fstream));
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<books>)";
或者,您可以将换行符附加到字符串中:
out.write("<books>\r\n");
答案 3 :(得分:0)
你绝对可以使用BufferedWriter
来写一个新行
请参阅下面的代码作为示例,并结合您自己的逻辑(给出在文件写入中写入新行的示例)
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
writer.write("I am the first Line");
writer.newLine();
writer.write("I am in the second Line");
writer.close();
您需要使用newLine()
中的BufferedWriter
方法
希望这会有所帮助,您不必将代码更改为新的输出流:)