java在Linux与Windows下的回车换行的区别



java中jdk7的Linux与Windows下的回车换行的区别是什么?在unicode编码表里面jdk7的回车换行实例教程。

在win7和ubuntu12下面跑如下的代码:
       String str = System.getProperty(“line.separator”);
       System.out.println(str.toCharArray().length);

win7 eclipse jdk7:输出的结果:2
ubuntu eclipse jdk7:输出的结果:1

果然有区别:接下来在分别执行下面代码:
       System.out.println((int)str.toCharArray()[0]);
       System.out.println((int)str.toCharArray()[1]);//在ubuntu上执行时,要注释此行,否则抛空指针异常

win7 eclipse jdk7:输出的结果:13   10
ubuntu eclipse jdk7:输出的结果:10

在unicode编码表里面:13代表回车 10代码换行(unicode是兼容ackII编码表的)

现在可以总结出在win7与ubuntujava回车换行的区别了:
在win7上:
回车表示回到当前行的最左端
换行表示光标移到下一行
在ubuntu上:
回车换行当左一回事了

jdk中BufferedWriter类newLine()方法的源码:
  
   public void newLine() throws IOException {
       write(lineSeparator);
   }
为什么在Linux上保存的文本,在Windows上就成了一行了,原因得以解释。