🎉博客首页:痛而不言笑而不语的浅伤
🥳欢迎关注👍点赞收藏🎊留言
❤:热爱Java学习,期待一起交流!
🙏🏻作者水平很有限,如果发现错误,求告知,多谢!
🥰有问题可以私信交流!!!
目录
4.1字节缓冲输入流【BufferedInputStream】
4.2字节缓冲输出流【BufferedOutputStream】
🚀☆引言☆
大家好,我是痛而不言笑而不语的浅伤。上一章我们学习了Java语言IO流中的序列化流,本章我们一起来学习Java语言IO流中的缓冲流。这篇文章主要带大家从缓冲流的概述和原理,分类,作用以及使用步骤等几个方面学习JavaIO流中的缓冲流。文章来自我的专栏《JavaSE系列详解》中,想要学习更多JavaSE的其他内容,订阅专栏《JavaSE系列详解》。对文章中描述错误的希望大家积极指出,我会加以改正。
🚀一、缓冲流的概述和原理
概述:
缓冲流也叫高效流,它可以对四个基本的字节流和字符流进行增强效果,达到提高数据的读写能力。就像是勇士穿上了一层铠甲一样。为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,减少系统IO次数,从而提高读写的效率。
图解:
原理:
这个就好像是一个家庭饮水要从自来水厂输送。内存就好比一个家庭,磁盘就是自来水厂,而要输送水的管道就是IO流,如果我们只要用水,每次直接从自来水厂输送水,时间长,效率低。而缓冲区就是在家里放一个水桶,我们先把水存放进水桶,我们需要的时候直接从水桶取水,这样就提高了取水的效率。缓冲流也一样,先把数据读取到缓冲区,我们再从缓冲区刷新读写,这样就提高了读取的效率。
图解:
🚀二、缓冲流的分类
因为是对四个基本的字节流和字符流做增强作用,缓冲流要“套接”在相应的节点流之上,所以按照数据类型分类也是四个:
字符缓冲输入流:BufferedInputStream
字节缓冲输出流:BufferedOutputStream
字符缓冲输入流:BufferedReader
字符缓冲输出流:BufferedWriter
🚀三、缓冲流的作用
作用:
作用前面说了就是对四个基本的字节流和字符流做增强作用,从而提高对数据读写的效率。
当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区。
当写入时,不会直接写到文件,先写到缓冲区中直到缓冲区写满,才会把缓冲区中的数据一次性写到文件里。使用方法flush()可以强制将缓冲区的内容全部写入输出流。
注意:
1.缓冲区不是越大越好,因为缓冲区占用的是内存,过大会严重占用内存。
2.一般默认的缓冲区为8M。
🚀四、缓冲流的使用
既然我们说了,缓冲流分为四个:字节缓冲输入流、字符缓冲输出流、字符缓冲输入流、字符缓冲输出流。依次对它们做一个详细的使用。