首页 > 解决方案 > Java - 在 Linux 上运行程序时,换行选项未按预期工作

问题描述

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

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

问题:当我使用 Eclipse 在 Windows 操作系统上运行程序时,我可以将字符串作为换行符添加到文件中。但是当在 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 在某处与换行符分隔相混淆。

任何投入将不胜感激。

谢谢,吉文。

标签: javanewlinebufferedwriter

解决方案


罪魁祸首在这里找到:

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

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

这个问题的一个经典解决方案是创建一个实用程序类/方法,它检查 JVM 正在哪个操作系统上运行,然后根据操作系统类型返回一个值(此类值的映射会很好地工作,恕我直言)。


推荐阅读