【问题标题】:NewLine Character for Unix [duplicate]Unix的换行符[重复]
【发布时间】:2015-02-18 17:14:30
【问题描述】:

我有一个在 Linux 机器上运行的 Java 应用程序,它正在生成一个文件,其中每个记录由新行分隔,

此文件将由在 Unix SunOS 系统上运行的应用程序使用,我下面的代码不会生成正确的文件。我的意思是下面的代码会生成一个文件,当我在 Unix 系统中使用 vi 编辑器打开它时,每行都以 ^M 字符结尾

bw = new BufferedWriter(new FileWriter(file));
bw.write("\n");

我必须写哪个字符才能在 Unix 系统中正确查看文件。

【问题讨论】:

  • 如果显示的代码生成一个\r\n 行结尾,那就是大错特错了。您确定您查看的是正确的文件吗?
  • 我建议你使用 PrintWriter.println() 它会为你处理新的行。
  • @Herry 我将文件从 Linux 复制到 Windows,然后复制到 Unix。此操作是否操作文件?
  • @mmc18 是的,您用于传输文件的工具可能会更改行终止符。这取决于您使用的工具以及使用方式。
  • @mmc18 是的,二进制模式确保文件没有被更改。当您通过 Windows 时,它甚至应该可以工作(前提是您没有使用任何 Windows 工具触摸该文件)。

标签: java linux unix


【解决方案1】:

\n 是 Unix 的正确行尾。它是使用\r\n 作为行尾(带有\r 或回车符号)的窗口,看起来像^M。您可以使用System.lineSeparator() 为您的系统获取正确的行尾。您还可以使用dos2unix 从文本文件中删除 dos 格式的换行符。

【讨论】:

  • 感谢您的解释,但正如我指出的那样,我已经添加了“\n”字符。
  • 使用dos2unix 删除您添加的\r 字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 2010-10-17
相关资源
最近更新 更多