java - 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 在某处与换行符分隔相混淆。
任何投入将不胜感激。
谢谢,吉文。
解决方案
罪魁祸首在这里找到:
bw.append(“\r\n” + “mystring”);
正如Johnny Mopp所提到的,断线在 Linux 上的行为不同。对于您的 Linux 部署,您应该使用“\n”而不是“\r\n”。
这个问题的一个经典解决方案是创建一个实用程序类/方法,它检查 JVM 正在哪个操作系统上运行,然后根据操作系统类型返回一个值(此类值的映射会很好地工作,恕我直言)。
推荐阅读
- angular - 将 Angular 6 更新到 7 - 依赖警告和打字稿错误
- apache-spark - PySpark 如何从 Dataframe 架构的 StructType 对象中解析和获取字段名称
- node.js - 如何将多个 JSON 对象插入到模式的一个属性中?
- .net - 登录凭证与公共 IP 的映射
- odoo - Odoo:选择树视图项目应链接到特殊视图
- html - 一张图片在 prestashop 中隐藏了我的段落
- jmeter - 1 用户和 100 用户的加载时间差异太大
- python - 我们如何根据颜色标记散点图的图例
- python - 恢复传递给 multiprocessing.Process 的函数返回值的最快方法
- angular - 在 Typescript Angular 2 中加入数组