Java中字节流和字符流的read()方法为什么返

 我来答
沉稳又淡泊丶小猫v
2018-02-05 · TA获得超过3564个赞
知道小有建树答主
回答量:1367
采纳率:80%
帮助的人:118万
展开全部
* 如果返回byte, 同样无法表示流末尾.
* byte的取值范围是从-128到127
* 这个范围内所有的数据, 都有可能在数据中出现
* read()方法需要返回一个特殊的值来表示流末尾, 这个值不能和流中的数据重复
*
* 字符流中读取到的char是直接当作int使用, 例如读取到一个'a'也就是97的时候, 那么就相当于返回了一个int的97
* 字节流中不能这么做, 因为如果文件中存在数据-1, 把-1直接当作int返回还是-1, 那么就无法区分这个读到的结果是流末尾还是流中的数据了
*
* read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数
* 这时就可以用-1表示流末尾了
* 而改变后的数据只要强转回byte, 就可以得到原有数据
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式