【问题标题】:Java: PrintWriter and newlines in a stringJava:字符串中的 PrintWriter 和换行符
【发布时间】:2018-05-03 10:48:19
【问题描述】:

我的问题很简单,如果我有一个长字符串,里面有很多“\n”换行符,即:

strings = "Hey\nThere\nFriend\n"

并使用 Java 中的 PrintWriter 执行以下操作:

PrintWriter save = new PrintWriter("test.txt");
save.println(strings);
save.close();

我最终得到的文件会用 \n 格式化吗?即文件将具有:

Hey
There
Friend

或者会有:

Hey\nThere\nFriend

如果是后者,有人可以指导我如何更改我的代码(以及了解 PrintWriter 的工作原理)以创建前一个输出吗?

【问题讨论】:

  • 是前者。试试看。

标签: java string io


【解决方案1】:

事实上,\n 可以工作,但仅适用于基于 Unix 的操作系统。基于 Windows 的操作系统使用 \r\n 作为分隔符。

如果要编写可移植代码,应避免使用特定的操作系统行分隔符。
赞成 System.lineSeparator() 不依赖于操作系统。
另请注意,PrintWriter 提供 println() 以实现不依赖于操作系统的断线(即使它对您的用例没有必要)

【讨论】:

  • 是的,刚刚在我的 Windows 系统上检查了这个,\n 产生了一行,但使用 System.lineSeparator() 提供了正确的输出。更新我的代码以反映这一点,非常感谢!
【解决方案2】:

您将获得一个文本文件,其中包含单个文本行 Hey\nThere\nFriend\n,后跟操作系统换行序列(由 println() 插入)。

\n 的含义取决于操作系统,可能还取决于文本编辑器。在 Linux 上,\n 通常会被解释为换行序列,但在 Windows 上,换行序列是 \r\n,因此大多数文本编辑器(例如本机记事本)将显示单个 HeyThereFriend 行。

【讨论】:

  • 是的,刚刚检查了这个,就是这样。感谢您澄清这一点,因为我不知道
【解决方案3】:

windows平台\n表示char(13)+Char(10)可以使用

String nl = Character.toString ((char) 13)+Character.toString ((char) 10);  
String strings = "Hey"+nl+"There"+nl+"Friend"+nl;
System.out.print(strings);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2013-07-09
    • 2016-02-10
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多