2017-05-09 62 views
0

我们都看过这样的事情:如果我们被告知使用系统属性line.separator而不是硬编码 n,为什么我的代码在Windows上工作?

使用System.getProperty(String)方法指的是 依赖于系统上的项目,如行终止和路径分隔符。

该帖从这个web site.

复制我硬编码的\n,和下面的代码工作在我的Windows机器上如预期。

package sample; 

public class Main { 

    public static void main(String[] args) { 
     System.out.println("hello\nworld"); 
    }; 

} 

输出是:

hello 
world 

我认为Java编译器所取代\n\r\n默默。于是我下载了JD GUI,打开了JAR文件,并看到了Hello\nworld。有谁能给我一个例子,\n不起作用,System.getProperty("line.separator")呢?

+0

用Std将您的Sting写入文件,用记事本打开它你会看到问题是什么 – Jens

+0

@Jens,你是对的。它看起来像命令提示符替换正确的行尾,而记事本不会。所以,如果你将你的评论转换为答案,我会接受它 –

回答

0

有不同的行分隔符,取决于操作系统。阅读此线程: What is the difference between \r and \n?

如果摘录:

更重要的是,UNIX倾向于使用\ n作为行分隔符; Windows倾向于使用\ r \ n作为行分隔符,而Mac(最多可使用OS 9)将\ r用作行分隔符。 (Mac OS X是Unix-y,所以使用\ n代替;可能会有一些兼容情况,尽管使用了\ r)。

+0

这是一个可能的重复问题: http://stackoverflow.com/questions/36796136/difference-between-system-getpropertyline-separator-and-n – urgas9

相关问题