【JAVA开发之IO流1-3】IO流之缓冲流

我们知道IO流分为字符流和字节流、输出流和输入流。
上面的这些流,都是非常缓慢的,比如说,字符流是一字符一字符先弄到内存上,再把这一字符写入硬盘。一字符一字符的搬运,字节流也是这样。
这就像有很多支笔,你要把它们从一个地方拿到另一个地方,你一支一支拿肯定慢,如果我们几支几支拿起来再一起搬运,速度会很快。
缓冲流的作用就是,将一定数量的字符或字节储存到流中,再一下写入硬盘,这样就加快了读写速度。

缓冲流包括:缓冲字节流(BufferedInputStream、BufferedOutputStream)和缓冲字符流(BufferedFileWrite和BufferedFileReader),他们都属于java.io包下的类。

下面通过一个例子来解析一下缓冲字节流的作用,用缓冲字节流复制一个图片文件到别的地方。

import java.io.*;
public class BufferedIOStream {
    public static void main(String[] args) throws IOException {
        /**
         * new出缓冲字节流(输入和输出),
         * 在构造方法中传入相应的字节流匿名对象,
         * 并在匿名对象的构造方法中指定位置路径。
         * */
        BufferedInputStream inBuffered=new BufferedInputStream(new FileInputStream("D:\\Demo.gif"));
        BufferedOutputStream outBuffered=new BufferedOutputStream(new FileOutputStream("E:\\DomeCopy2.gif"));
        /**
         * 定义一个字节数组,为2048字节,即攒够2048字节(2Kb)一下读写,即一次性读取2Kb,再一次性写入2Kb,
         * 比起先前读取1b就写入1b,速度会变快很多很多。
         * 然后定义一个int变量,接收读取到的数据,再传入上面那个字节数组。
         * 输出流的write方法里,有3个参数,传入byte数组后,传入不足2048字节的那一部分。就保证了数据的完整性
         * */
        byte[] bytes=new byte[2048];
        int data;
        data=inBuffered.read(bytes);
        while (data!=-1){
            outBuffered.write(bytes,0,data);
            data=inBuffered.read(bytes);
        }
        outBuffered.flush();//将流中的剩余数据都写入
        /**
         * 关闭两个流,即关闭两个文件的内存占用
         * */
        inBuffered.close();
        outBuffered.close();
        System.out.println("复制成功!!");
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值