java - 使用 PrintWriter 将多行字符串打印到文件中时遇到问题

标签 java string printwriter

我正在尝试将多行字符串打印到 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/

相关文章:

java - 简单但冗长的 Java PrintWriter 问题

java - 关于存储用户输入

java - 如何在 Camel 蓝图中从正文中剪切前 n 个字节?

java - 绘图方法流程

java - 将 JTextArea 格式化为表格格式

c - 存储在注册表中的字符串值如何不以 null 结尾?

java - 如何从可能存在或不存在的文件中读取字符串?

c++ - 就地标记化 std::string

c# - 如何用增量数字替换之前包含一些字符的唯一字符串

java - 使用字符串更新 .txt 文件