📜  Java IO-BufferedOutputStream类(1)

📅  最后修改于: 2023-12-03 15:15:56.282000             🧑  作者: Mango

Java IO-BufferedOutputStream类

简介

BufferedOutputStream是Java IO包中的一个类,用于将数据写入到输出流中,并使用缓存区来提高写入效率。通过使用BufferedOutputStream类,可以避免频繁地访问物理硬件设备而导致的性能问题以及减少了物理硬件设备对内存数据的影响。

构造方法
BufferedOutputStream(OutputStream out)

该构造方法会使用默认的缓存大小创建一个新的BufferedOutputStream对象,并使用指定的输出流作为该对象的底层输出流。

BufferedOutputStream(OutputStream out, int size)

该构造方法会使用指定的缓存大小创建一个新的BufferedInputStream对象,并使用指定的输出流作为该对象的底层输出流。

常用方法
write(int b)

参数:int b - 需要写入的单个字节。

返回值:void

该方法将指定的字节写入此缓冲的输出流。将一个字节写入缓存区仅仅是把字节存储在内存中,而不是马上写入到底层输出流中。一旦缓存区被填满或者写入操作被显式地调用,BufferedOutputStream才会把数据写入底层输出流中。

write(byte[] b, int off, int len)

参数:byte[] b - 需要写入的字节数组(其中off是开始处的偏移量,len是要写入的字节数)。

返回值:void

该方法将指定数组中从偏移量off开始的len个字节写入此缓冲的输出流。

flush()

返回值:void

该方法强制将缓冲区的所有未写入的输出数据写入该流的底层输出流中,同时清空缓冲区。如果底层输出流已经关闭,则抛出IOException异常。

close()

返回值:void

该方法强制将缓冲区的所有未写入的输出数据写入该流的底层输出流中,并关闭底层输出流。在关闭该输出流之前,必须调用该方法以刷新缓冲区并关闭底层输出流。关闭该流后,已经刷新到基础流的任何数据都不能再读取。

使用示例
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Example {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("test.txt");
             BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            String str = "Hello, World!";
            bos.write(str.getBytes());
            bos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上示例将字符串Hello, World!写入到test.txt文件中,并使用BufferedOutputStream类进行缓冲,从而提升写入效率。在写入数据后,还需要调用flush()方法将缓冲区的数据全部写出,头存储到物理硬件设备中。