Java - 将多行字符串写入文件

时间:2013-02-18 09:43:18

标签: java string multiline filewriter stringreader

我有一个包含多行的字符串,如下所示

<?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());
    }

4 个答案:

答案 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方法 希望这会有所帮助,您不必将代码更改为新的输出流:)