IO流 之 缓冲流(字节缓冲流和字符缓冲流)

迈不过友情╰ 2023-10-16 16:23 110阅读 0赞

在这里插入图片描述
缓冲流对原始流进行了包装,以提高原始流读写数据的性能。

字节缓冲流(BufferedInputStream和BufferedOutputStream)

在这里插入图片描述
字节缓冲流在内存中提供了一个默认为8kb的区域,用于缓冲,当流开始时,先读取一个8kb的内容缓存到内存,然后再对其进行操作,速度会变快,因为字节缓冲流利用缓冲区将数据暂时存储起来,减少了频繁地进行读写操作的次数,从而提高了读写的效率。相较于直接读写字节流,使用字节缓冲流可以减少系统调用次数,提升性能。就是直接操作硬盘的次数变少了。

在这里插入图片描述

而缓存的大小也是可以自定义的 但默认时8kb

下面时一个拷贝图片的代码示范:

  1. package day0927;
  2. import java.io.*;
  3. public class demo9 {
  4. public static void main(String[] args) {
  5. try (
  6. FileInputStream in = new FileInputStream("D:\\asdf.jpg");
  7. //将低级流放入高级流
  8. InputStream bin = new BufferedInputStream(in);
  9. FileOutputStream out = new FileOutputStream("E:\\asdf.jpg");
  10. OutputStream bout = new BufferedOutputStream(out)
  11. ){
  12. byte[] buffer = new byte[1024];
  13. int b;
  14. while ((b = bin.read(buffer))!= -1){
  15. bout.write(buffer,0,b);
  16. }
  17. } catch (Exception e) {
  18. throw new RuntimeException(e);
  19. }
  20. }
  21. }

字符缓冲流(BufferedInputStream和BufferedOutputStream)

在这里插入图片描述
字符缓冲流提供了一个8kb的默认缓冲区域,先将字符读取8kb到内存,再在内存中进行操作,然后再对其进行操作,速度会变快,因为字符缓冲流利用缓冲区将数据暂时存储起来,减少了频繁地进行读写操作的次数,从而提高了读写的效率。相较于直接读写字节流,使用字符缓冲流可以减少系统调用次数,提升性能。就是直接操作硬盘的次数变少了。
在这里插入图片描述
在这里插入图片描述
下面提供字符缓冲流复制txt文件的代码示范:

  1. package day0927;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. public class demo10 {
  7. public static void main(String[] args) {
  8. try (
  9. FileReader fileReader = new FileReader("src\\a.txt");
  10. BufferedReader br = new BufferedReader(fileReader);
  11. FileWriter fileWriter = new FileWriter("src\\d.txt");
  12. BufferedWriter bw = new BufferedWriter(fileWriter);
  13. ){
  14. String b;
  15. //readLine()一行一行读取文本,如没有内容后将返回null
  16. while ((b = br.readLine()) != null){
  17. System.out.println(b);
  18. bw.write(b);
  19. //newLine()换行方法
  20. bw.newLine();
  21. }
  22. } catch (Exception e) {
  23. throw new RuntimeException(e);
  24. }
  25. }
  26. }

发表评论

表情:
评论列表 (有 0 条评论,110人围观)

还没有评论,来说两句吧...

相关阅读

    相关 IO——缓冲

    一、缓冲流 1.为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。

    相关 IO——缓冲

    在进行读取文件中数据的操作时,读取数据量大的文件时,读取的速度会很慢,Java中提供了一套缓冲流,可以提高IO流的读写速度。 缓冲流 根据流的分类分为字节缓冲流与字符缓冲流