Java IO流 复制图片

(一)使用Java IO字节流复制图片

        byte[] bt = new byte[1024];
       
        //3.读取和写入信息(边读取边写入)
        while (fis.read(bt) != -1) {//读取
            fos.write(bt);//写入
        }

        //4.依次 关闭流(先开后关,后开先关)
        fos.close();
        fis.close();
    }

(二)使用字符流复制文件

        char[] ch = new char[1024];
        int length = 0;
        // 读取和写入信息(边读取边写入)
        while ((length = frd.read(ch)) != -1) {//读取
            fwt.write(ch,0,length);//写入
            fwt.flush();
        }

        // 依次 关闭流(先开后关,后开先关)
        frd.close();
        fwt.close();
    }

(三)以复制图片为例,实现抛出异常案例

字符流  =  字节流 + 解码 --->找对应的码表  GBK

字符流解码 : 拿到系统默认的编码方式来解码

将图片中的二进制数据和GBK码表中的值进行对比, 对比的时候会出现二进制文件在码表中找不对应的值,他会将二进制数据标记为未知字符,当我在写入数据的是后会将未知的字符丢掉。所以会造成图片拷贝不成功(丢失数据)

疑问:何时使用字节流?何时使用字符流?

使用字节流的场景:读写的数据不需要转为我能够看得懂的字符。比如:图片,视频,音频...

使用字符流的场景 :如果读写的是字符数据。

猜你喜欢

转载自www.linuxidc.com/Linux/2016-12/138084.htm
今日推荐