java.io
包中的BufferedOutputStream
类用于与其他输出流一起更高效地写入数据(以字节为单位)。
它扩展了OutputStream
抽象类。

BufferedOutputStream的工作原理
BufferedOutputStream
维护一个内部的8192字节缓冲区。
在写入操作期间,字节被写入内部缓冲区而不是磁盘。一旦缓冲区被填满或流被关闭,整个缓冲区将被写入磁盘。
因此,与磁盘的通信次数减少了。这就是为什么使用BufferedOutputStream
写入字节更快的原因。
创建BufferedOutputStream
为了创建BufferedOutputStream
,我们必须首先导入java.io.BufferedOutputStream
包。在此处导入包后,我们可以这样创建输出流。
// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream(String path);
// Creates a BufferedOutputStream
BufferedOutputStream buffer = new BufferOutputStream(file);
在上面的示例中,我们创建了一个名为buffer的BufferedOutputStream
,并使用了名为file的FileOutputStream
。
这里,内部缓冲区具有默认大小8192字节。但是,我们也可以指定内部缓冲区的大小。
// Creates a BufferedOutputStream with specified size internal buffer
BufferedOutputStream buffer = new BufferOutputStream(file, int size);
buffer将有助于更快地将字节写入文件。
BufferedOutputStream的方法
BufferedOutputStream
类提供了OutputStream
类中各种方法的实现。
write() 方法
write()
- 将单个字节写入输出流的内部缓冲区write(byte[] array)
- 将指定数组中的字节写入输出流write(byte[] arr, int start, int length)
- 将等于length的字节数从数组的start位置开始写入输出流
示例:使用BufferedOutputStream将数据写入文件
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
public class Main {
public static void main(String[] args) {
String data = "This is a line of text inside the file";
try {
// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream("output.txt");
// Creates a BufferedOutputStream
BufferedOutputStream output = new BufferedOutputStream(file);
byte[] array = data.getBytes();
// Writes data to the output stream
output.write(array);
output.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
在上面的示例中,我们创建了一个名为output的缓冲输出流,以及FileOutputStream
。输出流连接到文件output.txt。
FileOutputStream file = new FileOutputStream("output.txt");
BufferedOutputStream output = new BufferedOutputStream(file);
为了写入数据到文件,我们使用了write()
方法。
当我们运行程序时,**output.txt**文件将被以下内容填充。
This is a line of text inside the file.
注意:程序中使用的getBytes()方法将字符串转换为字节数组。
flush() 方法
要清空内部缓冲区,我们可以使用flush()
方法。此方法强制输出流将缓冲区中的所有数据写入目标文件。例如:
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
public class Main {
public static void main(String[] args) {
String data = "This is a demo of the flush method";
try {
// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream(" flush.txt");
// Creates a BufferedOutputStream
BufferedOutputStream buffer = new BufferedOutputStream(file);
// Writes data to the output stream
buffer.write(data.getBytes());
// Flushes data to the destination
buffer.flush();
System.out.println("Data is flushed to the file.");
buffer.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
输出
Data is flushed to the file.
当我们运行程序时,文件**flush.txt**将用字符串data表示的文本填充。
close() 方法
要关闭缓冲输出流,我们可以使用close()
方法。调用该方法后,我们不能再使用该输出流来写入数据。
要了解更多,请访问Java BufferedOutputStream(官方Java文档)。
另请阅读