a.int read(byte[] b) 一次读取一个字节数组
(用 int 类型接收是因为 byte 类型中会出现-1的情况,导致后面无法继续读取,int 类型会在前面补上24个0,不会出现-1的情况)
b.write(byte[] b) 一次写出一个字节数组
c.available() 获取读的文件所有的字节个数
弊端:有可能会内存溢出
read()方法读取的是一个字节,为什么返回是 int,而不是 byte
a.因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回 byte,有可能在读到中间的时候遇到111111111
那么这11111111是 byte 类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用 int 类型接收,如果11111111会在其前面补上
24个0凑足4个字节,那么byte类型的-1就变成 int 类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型 |