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

Java-将多行字符串写入文件,java,string,multiline,filewriter,stringreader,Java,String,Multiline,Filewriter,Stringreader,我有一个包含多行的字符串,如下所示 <?xml version="1.0" encoding="UTF-8"?> <books> <book publishyear="1990"> <name>Harry Potter</name> </book> </books> 哈利·波特 如何将其写入文件?我尝试过使用缓冲写入程序,但它不接受多行中的字符串 try{

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

<?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());
    }
试试看{
FileWriter fstream=新的FileWriter(“D:/temp.txt”);
BufferedWriter out=新的BufferedWriter(fstream);
写出
哈利·波特
");
out.close();
}catch(异常e){//catch异常(如果有)
System.err.println(“错误:+e.getMessage());
}

永远不要手动编写XML文档。文件编码失败,语法错误失败。总是使用DOM或类似的东西。您的演示代码已包含错误。

这与编写字符串或BufferedWriter无关

Java没有多行字符串,因此如果希望在源代码的多行上连接字符串,就必须将其连接起来。您还需要将实际换行符替换为转义字符,\n并将转义“替换为”

也就是说,你做到了:

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);
String foo=“\n”+
“\n”+
“\n”+
“哈利·波特\n”+
“\n”+
"";
out.write(foo);
如果需要,也可以在源代码的一行中编写所有这些内容:

out.write("<?xml version="1.0" encoding=\"UTF-8\"?>\n<books>\n ... etc.etc."));
out.write(“\n\n…etc.etc.”);

您应该转义引号并使用PrintWriter,它提供了println方法

PrintWriter out=新的PrintWriter(新的BufferedWriter(fstream))

out.println(“”);
out.println(“)”;
或者,您可以将行终止符附加到字符串:

 out.write("<books>\r\n");
out.write(“\r\n”);

使用
BufferedWriter

以下面的代码为例,结合您自己的逻辑(给出在文件写入中写入新行的示例)

您需要使用
BufferedWriter

中的
newLine()
方法
希望这有帮助,并且您不必将代码更改为新的输出流:)

您可以尝试为文件中的换行符添加\n。e、 g.:\n您应该首先确保已正确转义字符串中的引号,例如“UTF-8”中的引号。将所有内容放入StringBuffer/Builder中,然后将其
toString()
版本写入文件中。字符串
concat
对于这么多行来说,是很麻烦的。嗨,Michael,我有一个字符串要写入一个文件。这个字符串可以是纯文本/xml/任何带有多行的内容。所以我不知道我得到了什么类型的字符串…那么有可能将多行字符串写入文件吗?如果您不知道内容,那么客户端必须提供有效的输入,因为您只提供了写入功能。
 out.write("<books>\r\n");
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();