Java BufferedOutputStream 类用法说明及实例
本教程通过示例介绍 Java BufferedOutputStream 类以及使用方法。
本教程通过示例介绍 Java BufferedOutputStream 类以及使用方法。
java.io
包的 BufferedOutputStream
类与其他输出流一起使用以更有效地以字节为单位写入数据。
BufferedOutputStream
类扩展了 OutputStream
抽象类。
BufferedOutputStream 的原理
BufferedOutputStream
内部维护一个的 8192
个字节缓冲器。
在写操作期间,BufferedOutputStream
将字节数据写入内部缓冲区而不是直接写入磁盘磁盘。一旦缓冲区被填满或流被关闭,整个缓冲区就会被写入磁盘。
BufferedOutputStream
减少了与磁盘的通信次数,因此提高了写入的效率。
创建 BufferedOutputStream
BufferedOutputStream
类位于 java.io
包中,BufferedOutputStream
类提供了构造方法创建对象。 BufferedOutputStream
都是作为其他流的包装类使用,因此构造方法中需要传入一个 OutputStream
对象。如下:
// 文件输入流
FileOutputStream file = new FileOutputStream(String path);
// 包装了文件输入流的缓冲输入流
BufferedOutputStream buffer = new BufferOutputStream(file);
在上面的例子中,我们创建了一个名为 buffer
的 BufferdOutputStream
对象,它包装了 FileOutputStream
对象。
此处,内部缓冲区的默认大小为 8192
字节。但是,我们也可以通过以下构造方法自定义内部缓冲区的大小。
BufferedOutputStream buffer = new BufferOutputStream(file, int size);
BufferedOutputStream 的方法
BufferedOutputStream
类实现了的 OutputStream
类中的定义的所有的抽象方法。
write() 方法
write()
- 将单个字节写入输出流的内部缓冲区write(byte[] array)
- 将指定数组中的字节写入输出流write(byte[] arr, int start, int length)
- 将指定字节数组中从start
开始长度为length
的数据写入输出流
示例: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 {
FileOutputStream file = new FileOutputStream("output.txt");
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
关联在一起。
然后,我们使用 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 {
FileOutputStream file = new FileOutputStream("flush.txt");
BufferedOutputStream buffer = new BufferedOutputStream(file);
buffer.write(data.getBytes());
// Flushes data
buffer.flush();
System.out.println("Data is flushed to the file.");
buffer.close();
} catch (Exception e) {
e.getStackTrace();
}
}
}
输出
Data is flushed to the file.
当我们成功运行程序后,字符串 This is a demo of the flush method
被写入到文件 flush.txt
中。
close() 方法
close()
方法用来关闭输出流。一旦调用了 close()
方法,我们就不能使用输入流来中的数据了。
在以上所有示例中,我们都使用了 close()
关闭文件输出流的方法。