gpt4 book ai didi

java - 打印机 println : no new line created

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:56 28 4
gpt4 key购买 nike

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

一切正常,除了 PrintWriterprintln 方法:它不会创建新行。

它只是将每个句子直接一个接一个地拼接起来。下面代码片段的结果是

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

I tried the code on several machines: it works on my local tomcat instalation (Windows machine), but fails on a tomcat or Weblogic instalation on a Solaris platform. I thought it had something to do with the encoding algorithm, so I used PrintStream in stead of Printwriter, indicating the encoding ISO-8859-1, but no luck neither.

Any idea?

    try {
byte [] msgByte = Base64.decodeBase64(msgBase64);

InputStream inputMsg = new ByteArrayInputStream(msgByte);
msg = new MAPIMessage(inputMsg);

/* 1. Transform MSG to TXT. */
try {
txtOut = new PrintWriter(outputMsg);
try {
String displayFrom = msg.getDisplayFrom();
txtOut.println("De: "+displayFrom);
} catch (ChunkNotFoundException e) {
_logger.info("Error extrayendo displayFrom: "+e);
}
try {
String displayTo = msg.getDisplayTo();
txtOut.println("Para: "+displayTo);
} catch (ChunkNotFoundException e) {
_logger.info("Error extrayendo displayTo: "+e);
}

} finally {
if(txtOut != null) {
txtOut.close();}
else {
_logger.error("No se ha podido parsear el mensaje.");
}

}

最佳答案

更改以下内容:

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()方法。

关于java - 打印机 println : no new line created,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8476830/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com