日期:2014-05-20  浏览次数:21057 次

字符流中read方法返回值是int,为什么输出是char?
字符流中read方法返回值是int,当我从文本中读取是,返回int值,到末尾返回-1

可是为什么我把读入的数据再输出到另一个文本中还是char?

比如A的内容:
java练习

那把A读入在输出到B,B的内容还是:
java练习

为什么B的内容不是一串数字??

------解决方案--------------------
这个你得先去好好学学IO基础
不知道你的具体环境和代码,简单的假设一下
你用的InputStream和OutputStream
read方法有2种,一种是每次读取一个字节的read()方法,这个方法返回的是读取到的当前字节数据
一种是读取n个字节,放入byte[]缓冲区的双缓冲读写,返回的是读取到的字节长度
估计你用的是非缓冲的单字节读取,那么你读取完以后,用os输出时,同样是作为字节数据输出的,所以两者内容当然一样

至于你说的为什么不是一串数字...这个...字节是字节,字节不等于字符串,任何数据的底层都是字节,为什么你会得出写到B的内容是一串数字这个结论
------解决方案--------------------
简单来说
当你的I/O流读文件的时候,文件里面的内容被编码成二进制字节序列。

然后你又把你读到的二进制字节序列,原样不动的输出到文件中。

文件按照刚才编码的字符集,又把二进制字节流解码成了字符。

这就是上面的简单过程。


------解决方案--------------------
read的时候那read读取的就是一个char,但是char有对应assic码,而read的时候都会把char转成对象应assic码,所以也就是int型的了,而在写的时候也会还原成原来的char。
如果你直接打印那么就是该char的assic码了。