我有一个应用程序,我想在文件中将字符串写为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与新行分离混淆。
非常感谢任何输入。
谢谢, 杰文。
答案 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逻辑服务器中的类。
感谢您对我的帖子感兴趣。