字节缓冲流(BufferedInputStream/BufferedOutputStream)

字节缓冲流(BufferedInputStream/BufferedOutputStream)

目的:为字节输入输出流提供缓冲功能,提高IO效率,减少访问磁盘次数;

字节输入缓冲流:字节缓冲类中有一个8k的缓冲区,磁盘把8k的数据放入缓冲区,如果一次读的内容小于8kb,则不用访问磁盘。flush可以将缓冲区的数据读取到内存。

字节输出缓冲流:内存不会直接写入磁盘。而是先写入8k到缓冲区,缓冲区满了之后再由缓冲区写入磁盘。flush可以将缓冲区的数据写入到磁盘。

关闭:字节缓冲流也需要关闭。

构造方法:

BufferedInputStream(InputStream in)

BufferedInputStream(InputStream in,int size)

BufferedOutputStream(OutputStream out)

BufferedOutputStream(OutputStream out,int size)

字节输入缓冲流:

package com.tiedandan.IO流.字节缓冲流;

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

public class application {
   public static void main(String[] args) throws IOException {
       FileInputStream fis = new FileInputStream("d:\\bbb.txt");
       BufferedInputStream bis = new BufferedInputStream(fis);
//           读取,读取时不用在自己手动创建缓冲区 byte[] bytes =new byte[1024];
//
//       int count = 0;
//       while ((count=bis.read())!=-1){//用bis执行读方法效率比fis执行高
//           System.out.print((char)count);
//       }
       //字节缓冲流默认的缓冲区是8k,也可以自己定义缓冲区
       byte[] buf = new byte[1024];
       int count1 = 0;
       while ((count1= bis.read(buf))!=-1){
           System.out.println(new String(buf,0,count1));
      }

   bis.close();//关闭缓冲流,传入缓冲流的字节流也会关闭。
  }
}

字节输出缓冲流:

package com.tiedandan.IO流.字节缓冲流;

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

/**
* 字节输出缓冲流:内存不会直接写入磁盘。而是先写入8k到缓冲区.
* 缓冲区满了之后再由缓冲区写入磁盘。flush可以将缓冲区的数据写入到磁盘。
* 构造方法:
* BufferedOutputStream(OutputStream out)
* BufferedOutputStream(OutputStream out,int size)
*/
public class xieruapplication {
   public static void main(String[] args) throws IOException {
       FileOutputStream fos = new FileOutputStream("d:\\zhtt.txt");//创建字节写入(输出)流

       BufferedOutputStream bos = new BufferedOutputStream(fos);//创建字节输出缓冲流
       String  a ="helloworld";
       for (int i = 0; i <10 ; i++) {
           bos.write(a.getBytes());//数据写入到缓冲区
           bos.flush();//刷新到硬盘,不刷新数据就会存在缓冲区当中。
      }
       bos.close();
  }
}

 

posted on 2021-11-23 09:18  张铁蛋666  阅读(330)  评论(0编辑  收藏  举报

导航