缓冲是I/O中的一种性能优化。缓冲流为I/O流增加了内存缓冲区。有了缓冲区。使得在流上执行skip,mark和reset方法都成为可能。
BufferedIputStream类与BufferedOutputStream类
BufferedInputStream类可以对所有InputStream类进行带缓冲区的包装以达到性能的优化。其构造方法有两种。
1,BufferedInputStream(InputStream in):创建一个带有32个字节的缓冲输入流。
2,BufferedInputStream(InputStream in,int size):按vzhiding的大小来创建缓冲输入流。
一个最优的缓冲区的大小,取决于它所在的操作系统,可用的内存空间以及机器配置。
从构造方法可以看出,BufferedInputStream对象位于InputStream类对象之前,字节数据读取文件的过程如下图。
使用BufferedOutputStream输出信息和用OutputStream输出信息完全一致,只不过BufferedOutputStream用一个flush()方法将缓冲区的数据强制输出玩。BufferedOutputStream类也有两个构造方法。
1,BufferedOutputStream(OutputStream in):创建一个有32个字节的缓冲输出流
2,BufferedOutputStream(OutputStream in,int size):以指定的大小来创建缓冲输出流。
BufferedOutputStream写入文件过程如下图。
flush()方法就是用于即使在缓冲区没有满的情况下,也将蝗虫去的内容强制写入外设,习惯上成这个过程为刷新。flush()方法只对使用缓冲区的OutputStream类的子类有效。当调用cloase()方法时,系统在关闭流之前,也会将缓冲区中的信息刷新到磁盘文件中。
BufferedReader类与BufferedWriter类
BufferedReader类与BufferedWriter类分别继承Reader类与Writer类,这两个类同样具有内部缓冲机制,并可以以行为单位进行输入/输出。
BufferedReader类读取文件的过程如下图。
BufferedWriter类写入文件的过程如下图。
BufferedReader类的常用方法如下表:
BufferedWriter类的常用方法如下表:
在使用BufferedWriter类的write方法时,数据并没有立刻被写入至输出流,而是首先进入缓冲区中。如果想立刻将缓冲区中的数据写入输出流,一定要调用flush方法。