黑马程序员技术交流社区

标题: 关于字节读取流问题 [打印本页]

作者: 月光海    时间: 2014-4-13 22:32
标题: 关于字节读取流问题
字节读取流的read()方法读的不是一个字节吗,char不是占2个字节吗?为什么返回 的数字可以转为char类型????
作者: 钟成军    时间: 2014-4-13 22:39
read()方法的返回的是读入缓冲区的总字节数,类型为int型,int 型可以转为char类型啊
作者: 月光海    时间: 2014-4-13 22:45
钟成军 发表于 2014-4-13 22:39
read()方法的返回的是读入缓冲区的总字节数,类型为int型,int 型可以转为char类型啊 ...

read()返回的是读到的字节把,你这扯的,read(byte[]b)返回的是读到的字节数,我把字节数转成char干嘛,刚刚我又试了一下汉字,果然一个字节以外的编码的符号显示不出来
作者: 不似侽紸角.    时间: 2014-4-13 22:49
本帖最后由 不似侽紸角. 于 2014-4-13 22:50 编辑


简单来说做了类型转换!

作者: 不似侽紸角.    时间: 2014-4-13 23:01
月光海 发表于 2014-4-13 22:45
read()返回的是读到的字节把,你这扯的,read(byte[]b)返回的是读到的字节数,我把字节数转成char干嘛,刚 ...

字节流的读一个字节的read方法为什么返回值类型不是byte,而是int。
因为有可能会读到连续8个二进制1的情况,8个二进制1对应的十进制是-1.
那么就会数据还没有读完,就结束的情况。因为我们判断读取结束是通过结尾标记-1来确定的。
所以,为了避免这种情况将读到的字节进行int类型的提升。
并在保留原字节数据的情况前面了补了24个0,变成了int类型的数值。


而在写入数据时,只写该int类型数据的最低8位。

毕老师总结的!


这样
作者: 钟成军    时间: 2014-4-13 23:05
月光海 发表于 2014-4-13 22:45
read()返回的是读到的字节把,你这扯的,read(byte[]b)返回的是读到的字节数,我把字节数转成char干嘛,刚 ...

好吧,那我看错了,嘿嘿




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2