Java - 换行选项无法正常工作在Linux上运行程序时

时间:2018-04-30 13:52:17

标签: java newline bufferedwriter

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

我的程序在Linux OS上执行,我要写的文件驻留在Windows共享文件夹中。

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

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

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

我希望它像

$current_date=date('Y-m-d'); //2018-04-30

我非常确定代码明智没有错,在某些地方UNIX或Windows与新行分离混淆。

非常感谢任何输入。

谢谢, 杰文。

3 个答案:

答案 0 :(得分:1)

罪魁祸首在这里找到:

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

Johnny Mopp所述,breakline在Linux上表现不同。 对于Linux部署,您应该使用“\ n”而不是“\ r \ n”。

这个问题的一个经典解决方案是创建一个Utility类/方法,它检查运行JVM的操作系统,然后根据操作系统类型返回一个值(这些值的Map可以很好地工作,恕我直言)。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

感谢您对我的帖子感兴趣。