字节流缓冲区

我们使用字节流对象输入输出时,不是java程序直接与硬盘“交流”的,java没有这么大的权限,java程序在jvm中运行,jvm与操作系统相关联,操作系统再与硬盘“交流”,当j我们想要访问硬盘中的数据的时候,为了避免与硬盘的交互次数,java为我们提供了缓冲区。
当我们调用BufferedInputStream的读取数据的方法时,会从它底层维护的数组读取数据。
当我们调用BufferedOutputStream写数据的时候,会先将数据往数组里写,当数组里存满了之后再手动调用刷新方法,才能将数组里的数据写到硬盘中去。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class IoDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fi = new FileInputStream("e:/lishuai.txt");
        BufferedInputStream b1 = new BufferedInputStream(fi);
        FileOutputStream fo = new FileOutputStream("f:/lishuai.txt");
        BufferedOutputStream b2 = new BufferedOutputStream(fo);
        methord(fi, fo);
    }

    private static void methord(FileInputStream fi, FileOutputStream fo) throws IOException {
        // TODO Auto-generated method stub
        int len = 0;
        byte[] b = new byte[1024];
        while ((len = fi.read(b)) != -1) {
            fo.write(b);
        }
        b1.close();
        b2.close();
    }
}

你可能感兴趣的:(字节流缓冲区)