workplace-blog

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

字节缓冲流

  • 缓冲流(过滤流):BufferedInputStream/BufferedOutputStream
    • 提高I/O效率,减少访问磁盘的次数
    • 数据存储在缓冲区中,flush是将缓冲区中的内容写入文件,也可以直接close
    • 内部维护着一个字节输入/输出流
/**
 * 字节缓冲流
 * BufferedInputStream
 * BufferedOutputStream
 */
public class bufferedStream {
    public static void main(String[] args) throws  Exception{
        //创建字节流
        FileInputStream fis = new FileInputStream("E:\\test.txt");
        BufferedInputStream bis = new BufferedInputStream(fis);
        int data = 0;
        /**
         * BufferedInputStream自带一个8K缓冲区,read方法读取数据首先读入到缓冲区
         * 下次读取时,先从缓冲区读取,缓冲区未找到再去访问内存
         * 减少了内存的访问次数,提高了I/O效率
         */
        while ((data=bis.read()) != -1){
            System.out.print((char)data);
        }

        //使用FileInputStream自定义缓冲区
        byte[] buf = new byte[1024];//定义一个1K的缓冲区
        int count = 0;
        //从缓冲区buf读
        while ((count = fis.read(buf)) != -1){
            System.out.println(new String(buf,0,count));
        }
        bis.close();
        fis.close();
        
        //创建输出字符流
        FileOutputStream fos = new FileOutputStream("E:\\BufferedOut.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        bos.write("helloworld\n".getBytes());//写入了缓冲区
        bos.flush();//刷新到硬盘
        bos.close();
        System.out.println();
        System.out.println("finish");
    }
}
posted on 2022-08-26 19:38  多巴胺LLL  阅读(31)  评论(0)    收藏  举报