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 感兴趣。
我有一个应用程序,我想在 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 感兴趣。