美文网首页
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个字节。

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

相关文章

  • 【JavaSE(十三)】JavaIO流(中)

    1 IO流 1.1 IO流概述 Java中使用 IO流 来读取和写入,读写设备上的数据、硬盘文件、内存、键盘等等,...

  • zero copy技术图解

    1 传统的IO读写 传统的IO读写有两种方式:IO终端和DMA。他们各自的原理如下。 1.1 IO中断原理 整个流...

  • 入门(七)异常处理和IO

    1、异常处理 语法 (1)、示例 2、自定义异常 3、IO操作 (1)、文件读写 模式介绍 (2)、文件读写的简写...

  • Java基础笔记21

    21.01_IO流(字符流FileReader) 1.字符流是什么字符流是可以直接读写字符的IO流字符流读取字符,...

  • Java IO流之字符流

    ①IO流(字符流FileReader) 1.字符流是什么字符流是可以直接读写字符的IO流字符流读取字符, 就要先读...

  • Day 16

    文件File 路径 IO流 流中的异常处理

  • 标准IO流异常处理

    标准IO流异常处理 代码块

  • IO流简介

    io流的作用:读写设备上的数据,硬盘文件、内存、键盘、网络.... io流分类:输入流和输出流,字节流和字符流 字...

  • File,IO流与IO流异常处理

    File File类用于封装一个文件路径,可以描述一个文件或文件夹,通过File对象可以读取文件或者文件夹的属性数...

  • 3.c++标准库

    8.IO库 IO类 三个头文件: iostream 定义了用于读写流的基本类型 fstream 定义了读写命名文件...

网友评论

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

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