本帖最后由 薛飞 于 2013-3-25 23:37 编辑
- /**
- 获取当前系统的换行符
- */
- class GetHuanHang
- {
- public static void main(String[] args)
- {
- lineSeparator();
- }
- /*
- 注意:
- 1,在将流写入文件时,换行应根据操作系统的不同来决定。
- 2,在程序中我们应尽量使用System.getProperty("line.separator")来获取当前系统的换
- 行符,而不是写/r/n或/n。
- 3,当我们在java控制台输出的时候,\r和\n都能达到换行的效果。
- */
- public static void lineSeparator()
- {
- if (System.getProperty("line.separator").equals("\r\n"))
- {
- System.out.println("\\r\\n is for windows");
- }
- else
- if (System.getProperty("line.separator").equals("\r"))
- {
- System.out.println("\\r is for Mac");
- }
- else
- if (System.getProperty("line.separator").equals("\n"))
- {
- System.out.println("\\n is for Unix/Linux");
- }
- System.out.println("aa\nbb");//\n即为换行。
- System.out.println("aaa\rbb");//特别注意输出为:bba 因为\r是回车,即光标返回本行首开始打印。
- System.out.println("aa\r\nbb");//\r\n即为windows系统按下Enter键的操作,分两步,先回车后换行。
- }
- }
复制代码 '\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。回车和换行是两回事。通常用的Enter是两个加起来。Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”即“\r”。这样导致的直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
由以上分析可知,java的换行符可以是 '\n'或'\r\n'或'\r',即可能是两个字符也可能是一个字符。而在实际编程中最好用System.getProperty("line.separator")来获取当前平台的换行符,这样跨平台性更好。 |