IO流读写图片异常

2020-10-05  本文已影响0人  修行者12138

错误代码

byte[] bytes = new byte[2048];
while (inputStream.read(bytes) != -1) {
    outputStream.write(bytes);
}

正确代码

byte[] bytes = new byte[2048];
int len = 0;
while ((len = inputStream.read(bytes)) != -1) {
    outputStream.write(bytes, 0, len);
}

原因
假设某个文件的真实字节数是2049
第一段代码会往OutputStream写入2048 * 2 = 4096个字节,其中第二次写入时,bytes[1]到bytes[2047]都是默认值0,而不是真实的数据;
第二段代码只会往OutputStream写入2049个字节。

第一段代码大部分情况下好像是没问题的,读写图片的时候出现过问题,生成的图片打开后是模糊的,改成第二段代码就没问题了

上一篇下一篇

猜你喜欢

热点阅读