美文网首页
IO流读写图片异常

IO流读写图片异常

作者: 修行者12138 | 来源:发表于2020-10-05 16:29 被阅读0次

    错误代码

    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个字节。

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

    相关文章

      网友评论

          本文标题:IO流读写图片异常

          本文链接:https://www.haomeiwen.com/subject/vyutpktx.html