And*_*eas 5 java unix windows newline text-formatting
在Windows上,在Unix系统上使用System.out.println()打印输出.\n\r\n
有没有办法告诉java你想要使用哪些换行符?
是的,有一种方法,我刚尝试过.
有一个系统属性line.separator.您可以使用它进行设置System.setProperty("line.separator", whatever)
为了确保它确实导致JVM使用其他分隔符,我实现了以下练习:
PrintWriter writer = new PrintWriter(new FileWriter("c:/temp/mytest.txt"));
writer.println("hello");
writer.println("world");
writer.close();
Run Code Online (Sandbox Code Playgroud)
我现在在Windows上运行,所以结果是14个字节长的文件:
03/27/2014 10:13 AM 14 mytest.txt
1 File(s) 14 bytes
0 Dir(s) 409,157,980,160 bytes free
Run Code Online (Sandbox Code Playgroud)
但是当我在代码的开头添加以下行时:
System.setProperty("line.separator", "\n");
Run Code Online (Sandbox Code Playgroud)
我有14个字节长的文件:
03/27/2014 10:13 AM 14 mytest.txt 1个文件14个字节0个Dir(s)409,157,980,160个字节免费
我用记事本打开了这个文件,该记事本不能识别单行\n作为新行,helloworld而是看到一行文本而不是两行.所以,这很有效.
正如其他人已经指出的那样,系统属性line.separator包含实际的行分隔符。奇怪的是,其他答案没有得出简单的结论:您可以通过在启动时更改系统属性来覆盖该分隔符。
例如,如果您-Dline.separator=X在命令行中使用该选项运行程序,您将得到以。System.out.println(…);结尾的有趣行为X。
最棘手的部分是如何像指定的字符\n或者\r在命令行中。但这是特定于系统/环境的,不再是Java问题。