首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上运行程序时,Java - newline选项不像预期的那样工作。

在Linux上运行程序时,Java - newline选项不像预期的那样工作。
EN

Stack Overflow用户
提问于 2018-04-30 13:52:16
回答 3查看 769关注 0票数 1

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

我的程序在Linux操作系统上执行,我想要写的文件驻留在一个windows共享文件夹中。

问题:当我使用eclipse在windows操作系统上运行程序时,我可以将字符串作为换行符添加到文件中。但是,在Linux机器上部署和运行应用程序时,字符串会被添加到文件中,而不是作为换行符添加。

例如:如果我想将一个新的字符串作为“测试用户”添加到文件中,那么它就是这样添加的。

代码语言:javascript
复制
Hr usr 
Hi usr
Jk  usrtest user

我想让它像

代码语言:javascript
复制
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的某个地方,与换行符分离混淆了。

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

谢了,杰万。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-02 18:19:28

在这种情况下,"\r\n“是工作的,我遇到了一个部署问题,所以在尝试"\r\n”时,它没有更新web逻辑服务器中的类。

谢谢你对我的职位感兴趣。

票数 1
EN

Stack Overflow用户

发布于 2018-04-30 13:57:15

罪魁祸首在此发现:

代码语言:javascript
复制
bw.append(“\r\n” + “mystring”);

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

这个问题的一个典型解决方案是创建一个Utility /方法来检查JVM运行在哪个操作系统上,然后根据OS类型返回一个值(IMHO,这类值的映射会很好地工作)。

票数 1
EN

Stack Overflow用户

发布于 2018-04-30 13:59:08

除了其他注释中提到的\n之外,您还可以尝试使用String.format("%n")来获取新行。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50101976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档