我正在尝试将多行字符串打印到 PrintWriter 中,但它无法识别不同的行。
我有这个字符串:“2\n0 0 1 string1\n0 2 1 string2”。
我期望在文件中包含的文本是:
2
0 0 1 string1
0 2 1 string2
但实际上是:
20 0 1 string10 2 1string2
我的代码是:
public void save(String str){
try{
PrintWriter out = new PrintWriter("file.txt");
out.println(str);
out.close();
System.out.print(str);
}catch(Exception e){System.out.println(e);}
}
在控制台中打印 OK。
我正在使用 BlueJ 进行编码。我的操作系统是W7,我刚刚用记事本打开了该文件。
解决了!
使用“\r\n”而不仅仅是“\n”可以正常工作!
最佳答案
如果您想在 Windows 上表示文字换行符,则需要使用 \r\n
,这是该平台的标准分隔符。
换句话说,你的原始字符串需要是
"2\r\n0 0 1 string1\r\n0 2 1 string2"
但是,这很快就会变得不可移植,因此您应该首先查询标准分隔符,然后使用它来构造字符串。
String d = System.getProperty("line.separator");
String mystr = String.format("2%s0 0 1 string1%s0 2 1 string2", d, d)
此外,基于this answer ,我们可以使用 %n
格式说明符来避免调用 getProperty()
。
String mystr = String.format("2%n0 0 1 string1%n0 2 1 string2")
关于java - 使用 PrintWriter 将多行字符串打印到文件中时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24398828/