Printwriter println:没有创建新行

时间:2011-12-12 15:40:13

标签: java solaris printwriter

我正在尝试使用Apache POI类将outlook .MSG文件解码为文本文件。

除了println的{​​{1}}方法之外,一切正常。它不会创建新行。

它只是一个接一个地直接连接每个句子。以下代码段的结果是

"De: textPara: " iso 
"De: "
"Para: "

我在几台机器上尝试了代码:它适用于我的本地tomcat安装(Windows机器),但在Solaris平台上的tomcat或Weblogic安装上失败。我认为这与编码算法有关,所以我使用PrintWriter代替PrintStream,表示编码ISO-8859-1,但没有运气。

有什么想法吗?

Printwriter

1 个答案:

答案 0 :(得分:22)

更改以下内容:

txtOut.print("De: "+displayFrom + "\r\n");
txtOut.print("Para: "+displayTo + "\r\n");

这与PrintWriter.println()生成Line break的方式有关,具体取决于操作系统。对于unix系统 LF(\ n),对于Windows CR + LF(\ r \ n)

请注意我是如何添加“ \ r \ n ”这意味着 CR + LF 并使用 print()而不是的println()即可。这样生成的换行符不依赖于平台。

您还可以在类中添加以下方法以避免重复,只需调用此自定义println()而不是直接调用txtOut.print()。

private static final String LINE_SEPARATOR = "\r\n";

public void println(String str) {
    txtOut.print(str + LINE_SEPARATOR);
}

这样您就可以调用 println()方法。