Java中的BufferedInputStream和BufferedOutputStream(附带实例)
BufferedInputStream 和 BufferedOutputStream 属于过滤流,提供了缓冲功能,可以显著提高 I/O 操作的效率。
Java 程序中,可能需要处理更复杂的 I/O 操作,例如处理大文件或网络数据流。在这些情况下,使用缓冲 I/O 类可以大大提高程序的效率和性能。
实例化 BufferedInputStream 类的对象时,需要给出一个 InputStream 类型的实例对象。BufferInputstream 定义了两种构造函数:
下面用一个简单例子展示如何使用 BufferedInputStream 读取一个文本文件。
【实例 1】使用 BufferedInputStream 读取“d:\\example.txt”文件中的内容。文件内容是本题目对应的代码,并输出到控制台。

图 1 程序的运行结果
实例化 BufferedOutputStream 类的对象时,需要给出一个 OutputStream 类型的实例对象。该类的构造方法有两个:
下面用一个简单的例子展示如何使用 BufferedOutputStream 写入一个文本文件。
【实例 2】使用 BufferedOutputStream 向文本文件 d:\\example1.txt 中写入数据。
Java 程序中,可能需要处理更复杂的 I/O 操作,例如处理大文件或网络数据流。在这些情况下,使用缓冲 I/O 类可以大大提高程序的效率和性能。
Java BufferedInputStream读取数据
BufferedInputStream 可以用来读取数据流。该类会从底层输入流中读取数据,并将数据存储在内部缓冲区中。这使得可以一次从缓冲区中读取多个字节,而不是每次只读取一个字节,从而提高了效率。实例化 BufferedInputStream 类的对象时,需要给出一个 InputStream 类型的实例对象。BufferInputstream 定义了两种构造函数:
- BufferInputstream(InputStream in):缓冲区默认大小为 2048 个字节;
- BufferInputStream(InputStream in,int size):第二个参数表示指定缓冲区的大小,以字节为单位。
下面用一个简单例子展示如何使用 BufferedInputStream 读取一个文本文件。
【实例 1】使用 BufferedInputStream 读取“d:\\example.txt”文件中的内容。文件内容是本题目对应的代码,并输出到控制台。
import java.io.*; public class BufferedInputStreamExample { public static void main(String[] args) { try { FileInputStream fileInputStream = new FileInputStream("d:\\example.txt"); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); int data; while ((data = bufferedInputStream.read()) != -1) { System.out.print((char) data); } bufferedInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }程序执行结果如下图所示:

图 1 程序的运行结果
Java BufferedOutputStream写入数据
BufferedOutputStream 可以用来写入数据流。这个类将数据写入内部缓冲区,直到缓冲区满或者显式地刷新缓冲区。这使得可以一次写入多个字节,而不是每次只写入一个字节,从而提高了效率。实例化 BufferedOutputStream 类的对象时,需要给出一个 OutputStream 类型的实例对象。该类的构造方法有两个:
- BufferedOutputStream(OutputStream out):参数 out 指定需要连接的输出流对象,也就是 out 将作为 BufferedOutputStream 流输出的目标端。
- BufferedOutputStream(OutputStream out,int size):参数 out 指定需要连接的输出流对象,参数 size 指定缓冲区的大小,以字节为单位。
下面用一个简单的例子展示如何使用 BufferedOutputStream 写入一个文本文件。
【实例 2】使用 BufferedOutputStream 向文本文件 d:\\example1.txt 中写入数据。
import java.io.*; public class BufferedOutputStreamExample { public static void main(String[] args) { try { FileOutputStream fileOutputStream = new FileOutputStream("d:\\example1.txt"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream); bufferedOutputStream.write("Hello, world!".getBytes()); bufferedOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }运行该程序,会在“d:\example1.txt”文件中写入“Hello,world!”。