Java Unix的换行符

Java Unix的换行符,java,linux,unix,Java,Linux,Unix,我有一个Java应用程序在Linux机器上运行,它正在生成一个文件,其中每个记录用新行分隔 此文件将由运行在Unix SunOS系统上的应用程序使用,我下面的代码不会生成正确的文件。我的意思是,下面的代码生成了一个文件,当我在Unix系统中用vi编辑器打开它时,每一行都以^M字符结尾 bw = new BufferedWriter(new FileWriter(file)); bw.write("\n"); 要在Unix系统中正确查看文件,我必须写入哪个字符。Unix的\n是正确的行尾。win

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

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

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

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

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

对于Unix来说,
\n
是正确的换行符。windows使用
\r\n
作为行结束符(带有
\r
或回车符),看起来像^M。您可以使用来获取系统的正确行结束符。您还可以使用
dos2unix
从文本文件中删除dos格式的换行符。

如果显示的代码生成一个
\r\n
行结尾,则会出现严重错误。您确定正在查看正确的文件吗?我建议您使用PrintWriter.println(),它将为您的应用程序处理新行。@Herry我将文件从Linux复制到Windows,然后复制到Unix。此操作是否操纵文件?@mmc18是的,您用于传输文件的工具可能会更改行终止符。这取决于您使用的工具和使用方式。@mmc18是的,二进制模式确保文件不被更改。当您通过Windows(前提是您没有使用任何Windows工具接触该文件)时,它甚至应该可以工作。如果显示的代码生成
\r\n
行结尾,则会出现严重错误。您确定正在查看正确的文件吗?我建议您使用PrintWriter.println(),它将为您的应用程序处理新行。@Herry我将文件从Linux复制到Windows,然后复制到Unix。此操作是否操纵文件?@mmc18是的,您用于传输文件的工具可能会更改行终止符。这取决于您使用的工具和使用方式。@mmc18是的,二进制模式确保文件不被更改。当您通过Windows时(前提是您没有使用任何Windows工具接触该文件)。感谢您的解释,但正如我指出的,我已经添加了“\n”字符。使用
dos2unix
删除您添加的
\r
字符。感谢您的解释,但正如我指出的,我已经添加了“\n”字符。使用
dos2unix
删除添加的
\r
字符。