会有这个情况,一旦读取到-1就结束,刚刚我回顾一下毕老师的视频,
【黑马程序员_毕向东_Java基础视频教程第19天-14-IO流(自定义字节流的缓冲区-read和write的特点)】
里面的自定义字节流的缓冲区就说到这个问题,视频是从拷贝MP3的问题引起的思考就说到这个问题;
你看到源码中的read方法是int类型的,而读文件却是读字节,这是因为read方法就是把byte提升为int,
此时-1的八位就变成32位,老师用&255来避免读到-1的情况,write方法就是把int强转为byte,也就是
只读取最后八位,这样就可以读取到所有的数据了。
如果我说的你理解不了,可以去看一下老师的视频
一起学习,一起加油哈
|