在 FileOutputStream 和 BufferedOutputStream 上测试 write(byte[])

Testing write(byte[]) on FileOutputStream vs. BufferedOutputStream

使用 FileOutputStreamBufferedOutputStreamwrite(byte[]) 方法时是否存在实际性能差异?

我在硬盘上测试了写入 500 MB 的文件,结果分别是 13 秒和 12 秒:

try(FileOutputStream out = new FileOutputStream(filePath1)) {
            out.write(readBytes);
}

并且

try(BufferedOutputStream out = new BufferedOutputStream( 
                           new FileOutputStream(filePath2))) {
            out.write(readBytes);
}

关于 BufferedOutputStream 效率我错过了什么?

如果您一次写入一点数据,

BufferedOutputStream 会更有效率:它会分批写入,直到它有 "enough" 个数据。

如果您一次写入所有内容,则不会有任何区别,因为总是有足够的数据来填充缓冲区;或者您已到达数据末尾,需要关闭流。