A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tomson_tang 中级黑马   /  2015-2-8 10:27  /  1334 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在网上查资料发现比较多的说法是:
\r回车 Carriage Return
\n新行 New Line
但是都会造成换行。
各个操作系统不一样,可以使用System.getProperty("line.separator")来获取当前OS的换行符,各系统应当是:
\r Mac
\n Unix/Linux
\r\n Windows

又有一种说法:
public class Test1{
            public static void main(String[] args){
                   System.out.println("12345\n6789");
            }
}
编译、运行后,显示结果为:
12345
6789
而如果把"12345\n6789”换为"000006\r12345",则编译、运行后的显示结果为:
123456
也就是,\r后的12345取代了原来的00000,而6保留。

于是自己试了一下:


结果控制台输出的内容为:
123456
789
abcd
efg
tom
john
显然结果是一样的!
再对文件写入试试:
首先对字节流进行尝试:

输出结果为:
9
[B@2bc68b6f
1234
5678

换成:
结果为:
9
[B@77ec3adc
1234
5678
再换成:
结果为:
10
[B@2bc68b6f
1234
5678
再换成:
结果为:


10
[B@2bc68b6f
1234

5678

由以上几个实验可以看出:无论是"\r"还是"\n"在字符中都占一个字节,当然"\r\n"和"\n\r"就占两个字节,"\r"和"\n"和"\r\n"的输出效果一样换行,而"\n\r"输出的是中间隔一行空格。个人推测:由于没有存在"\n\r"的标准,系统就自动把它划分为\n和\r,故换了两行。
在这里发现另外一个问题:当我用记事本打开该路径下的hello.txt时,发现只有\r\n符会对其起作用,其他均不显示换行结果都为:12345678。但是用其他软件譬如wps打开该文档时发现无论是哪种换行符都只会换一行与\n结果相同,再次用eclipse打开该文档可以显示与程序结果控制台的结果。
猜测:由于记事本软件是win7自带的故只能对\r\n有效,第一种说法成立,由于其他软件并不是win7自带的对于各种回车换行符的处理不大相同,但是从程序中可以知道,尽管除了\r\n能在win7下的记事本软件正常显示,其他不能正常显示,但是相同的会在相应位置占据该字符的字节。
接下来用字符流进行尝试:
得出结论与字节流相同!



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马