Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制Java只写换行符?I';我正在使用获取CRLF\n_Java_Windows_Newline_Carriage Return - Fatal编程技术网

如何强制Java只写换行符?I';我正在使用获取CRLF\n

如何强制Java只写换行符?I';我正在使用获取CRLF\n,java,windows,newline,carriage-return,Java,Windows,Newline,Carriage Return,[已解决] 看来我的申请不是问题所在。按建议逐字符读取不会显示任何CR。 错误可能在接收器端(与我的应用程序无关),出于任何原因,它添加了0x0D字符。 这仍然是一个很好的示例,说明了如何仅放置\n [/已解决] 我的应用程序中有一个奇怪的行为: 我只需要用一个LF结束每一行,据我所知,它应该是“\n”。 但我仍然会得到每一行的CRLF(好像我在写“\r\n”) 这个应用程序相当复杂,所以我在这里粘贴了一个示例代码 private static final String STR1 = "Str_

[已解决]

看来我的申请不是问题所在。按建议逐字符读取不会显示任何CR。 错误可能在接收器端(与我的应用程序无关),出于任何原因,它添加了0x0D字符。 这仍然是一个很好的示例,说明了如何仅放置\n

[/已解决]

我的应用程序中有一个奇怪的行为:

我只需要用一个LF结束每一行,据我所知,它应该是“\n”。 但我仍然会得到每一行的CRLF(好像我在写“\r\n”)

这个应用程序相当复杂,所以我在这里粘贴了一个示例代码

private static final String STR1 = "Str_1";
private static final String STR2 = "Str_2";
private static final char NEW_LINE = (char)0x0A;
//private static final String NEW_LINE = "\n";

public static void main(String[] args) {

    //They all return CR+LF instead of LF only.
    System.out.println("Str_1\nStr_2");

    System.out.print(STR1+NEW_LINE+STR2);

    try{
        FileOutputStream fos = new FileOutputStream("tests\\newline_test.txt");
        fos.write((STR1+NEW_LINE+STR2).getBytes()); //The case I'm mostly interested into
        fos.close();
    } catch (IOException e){
        e.printStackTrace();
    }
}
我正在Windows平台上使用Eclipse和Java6(强制)


有没有什么环境会把这搞砸?还是我遗漏了什么?

如果您只打算使用Windows,可以使用13和10作为行分隔符

os.write(10);
os.write(13);
如果您必须注意管理跨平台测线分离器,我将使用以下方法:

System.getProperty("line.separator")
或者这个:

String.format("%n")

希望对您有所帮助

如果您只打算使用Windows,您可以使用13和10作为行分隔符

os.write(10);
os.write(13);
如果您必须注意管理跨平台测线分离器,我将使用以下方法:

System.getProperty("line.separator")
或者这个:

String.format("%n")

希望对您有所帮助

我无法相信,此代码会生成一个包含\r\n的文件

创建后,在使用任何其他工具对文件进行剪切之前,立即使用十六进制转储工具检查文件(例如,您可以使用“微小的十六进制程序”)


可能是您在创建文件后用编辑器打开了该文件,而编辑器\r\n回写了?

真不敢相信,此代码会生成一个带有\r\n

创建后,在使用任何其他工具对文件进行剪切之前,立即使用十六进制转储工具检查文件(例如,您可以使用“微小的十六进制程序”)


可能是您在创建文件后用编辑器打开了该文件,而编辑器将其写回\r\n?

您的程序是正确的。要进行测试,请在创建文件后添加此代码段,即在
fos.close()之后

输出应为:

Str_1
Str_2
Str_1
Str_283
116
114
95
49
10
83
116
114
95
50


请注意,您只会得到新行字符
10
。如果文件有CR,那么输出也应该包含
13

您的程序是正确的。要进行测试,请在创建文件后添加此代码段,即在
fos.close()之后

输出应为:

Str_1
Str_2
Str_1
Str_283
116
114
95
49
10
83
116
114
95
50


请注意,您只会得到新行字符
10
。如果文件有CR,那么输出也应该包含
13

如何检查换行符是否只是
\n
\r\n
?是否仅在eclipse窗口中尝试过?因为存在一个打开的错误:如果换行符只是
\n
\r\n
,如何检查?是否仅在eclipse窗口中尝试过?因为有一个开放的bug:完美的检查方法,没想到。似乎问题出在接收器端,这不是我开发的。非常感谢。完美的检查方式,没想到。似乎问题出在接收器端,这不是我开发的。非常感谢。