本帖最后由 谢洋 于 2013-2-26 12:27 编辑
read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数
这时就可以用-1表示流末尾了
而改变后的数据只要强转回byte, 就可以得到原有数据
如果不这样子会做发生的问题,在毕老师的模拟字节流流读取法方的视频中有详细的讲解,
具体不知道在那个视频了,反正是一个coyp my3文件例子,才copy一点就出现copy完的结果
因原是mp3存放的字节中可能出现n多个-1(11111111),如果以字节的形式返回 ,那么当读到第一个-1时,就会发生以为读到结结尾了。
而把-1(11111111)强转为int返回就变成00000000 00000000 0000000 11111111这这样就不会误以为到结尾了.
因为所有字节转型后都是正数,所以当返回的的是1111111 111111 111111 1111111 是就表结束了
这里说不清,还是多看视频就明白了
|