2022.5.5 I/O 字节缓冲流

字节缓冲流

缓冲流:BufferedInputStream/ BufferedOutputStream

  • 提高IO效率,减少访问磁盘次数

  • 数据存储在缓冲区中,flush是将缓冲区的内容写入文件中,也可以直接close

BufferedInputStream内部有一个缓冲区,默认大小为8M,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数据源(譬如文件)读取新数据(这里会尝试尽可能读取多的字节)放入到缓冲区中,最后再将缓冲区中的内容部分或全部返回给用户.由于从缓冲区里读取数据远比直接从物理数据源(譬如文件)读取速度快,所以BufferedInputStream的效率很高!

字节缓冲流读文件(放到缓冲区在读)

 1 package com.xing;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.FileInputStream;
 5 import java.io.IOException;
 6 
 7 public class Demo04 {
 8     public static void main(String[] args) throws IOException {
 9         //输入流 底层流
10         FileInputStream fis = new FileInputStream("d:\\aaa.txt");
11         //缓冲流
12         BufferedInputStream bis = new BufferedInputStream(fis); //放到缓冲区
13 
14         //读取:fis.read()从硬盘读     bis.read()从缓冲区读  内部自己的缓冲区
15         int data = 0;
16         while ((data = bis.read())!=-1) {
17             System.out.print((char)data);
18         }
19 
20         //相当于用数组作为缓冲区
21         byte[] bytes = new byte[1024];
22         int count = 0;
23         while ((count = bis.read(bytes)) != -1) {
24             System.out.println(new String(bytes,0,count));
25         }
26         //关闭缓冲流即可
27         bis.close();
28     }
29 }

字节缓冲流写文件(先写入缓冲区,在由缓冲区写到磁盘)

 1 package com.xing;
 2 
 3 import java.io.BufferedOutputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public class Demo05 {
 9     public static void main(String[] args) throws IOException {
10         //输出流
11         FileOutputStream fos = new FileOutputStream("d:\\buffer.txt");
12         //缓冲流
13         BufferedOutputStream bos = new BufferedOutputStream(fos);
14 
15         //写入文件
16         for (int i = 0; i < 10; i++) {
17             //字符串的getBytes()方法返回字节数组
18             bos.write("helloworld\n".getBytes());//写入到8K缓冲区
19             //bos.flush();//刷新到硬盘
20         }
21         //关闭  内部调用flush()  所以不写上边也没事
22         bos.close();
23     }
24 }

posted @ 2022-05-06 10:02  暴躁C语言  阅读(30)  评论(0)    收藏  举报