关于write方法应用的问题。

img


这个写操作是不是根据数组的大小一次一次写啊,不满一字节按照一字节存储。
存储的文件比原文件大一字节。
后面我用


 write(b,0,n)

解决了文件大小不一样的问题。

public int read(byte[] b) 返回的是读到数组中的有效个数, 假设数组是长度是1024, 前两次数组内容都读取完全了, 第三次数据不够1024, 只剩1023个数据, 那么 如果直接读取数组, 读到的是这次读到的1023个数据+上次最后一个数据(因为这次读取并没有覆盖掉), 因此使用write(b,0,n) 写b数组的内容,从索引0开始 写n个数据, 因为n是上面读取数组返回的有效个数, 这样就没问题啦

看下源码就知道为什么了。

    public void write(byte b[]) throws IOException {
        write(b, 0, b.length);
    }