Java - 当 运行 程序在 Linux 上时,换行选项没有按预期工作

Java - newline option is not working as expected When running program on Linux

我有一个应用程序,我想在 EOF 处将字符串作为换行符写入文件。

我的程序在 Linux OS 上执行,我要写入的文件位于 windows 共享文件夹中。

问题:当我使用 eclipse 运行 windows OS 上的程序时,我能够将字符串作为换行符添加到文件中。 但是当在 Linux 框中部署和 运行 应用程序时,字符串会添加到文件中,但不会作为换行符。

例如: 假设我想在文件中添加一个新字符串作为“测试用户”,这就是它添加的方式。

Hr usr 
Hi usr
Jk  usrtest user

我希望它像

Hr usr
Hi usr
Jk usrt
test user

BufferedWriter bw = new BufferedWriter(new FileWriter(fileUrl, true)); 
bw.newLine();
//didn’t write newline when I deployed it to Linux box
bw.write();
//OR
bw.append(System.lineSeperator() + “mystring”);
//didn’t write newline when I deployed it to Linux box
//OR
bw.append(“\r\n” + “mystring”);
//didn’t write newline when I deployed it to Linux box

我很确定在代码方面没有任何问题,UNIX 或 Windows 对换行符分隔感到困惑。

如有任何意见,我们将不胜感激。

谢谢, 杰文.

罪魁祸首在这里:

bw.append(“\r\n” + “mystring”);

Johnny Mopp 所述,断线在 Linux 上的行为不同。 对于 Linux 部署,您应该使用“\n”而不是“\r\n”。

这个问题的经典解决方案是创建一个实用程序 class/method,它检查 OS JVM 运行,然后返回一个基于 OS 的值type(恕我直言,此类值的 Map 会很好用)。

除了其他评论中提到的 \n 之外,您可以尝试 String.format("%n") 换行。

或者你甚至可以使用 System.getProperty("line.separator");

在这种情况下,“\r\n”正在运行,我遇到了部署问题,因此它在尝试“\r\n”时没有更新 Web 逻辑服务器中的 class。

感谢您对我的 post 感兴趣。