gpt4 book ai didi

java - 性能:BufferedOutputStream 与 FileWriter

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:45 26 4
gpt4 key购买 nike

我一直使用 FileWriter用 Java 将文本写入文件。显然你也可以使用 BufferedOutputStream以及。在仔细阅读了这两个 javadoc 之后,我似乎无法分辨哪个更快/更有效。

所以我问:这两种文件 I/O 方法之间是否存在性能差异(即使很小)?如果是这样,它们是什么,为什么?如果不是,为什么它们实际上是相同的?

是否存在其中一种优于另一种的情况?提前致谢!

最佳答案

如果您真的想比较 FileWriterBufferedOutputStream 来编写文本文件,后者应该更快,因为 I/O 操作更少。

  • FileWriter 的情况下,每次调用 write 方法都会立即持久化(它是无缓冲的)。
  • BufferedOutputStream 的情况下,如果缓冲区已满(或使用 flush 方法显式刷新缓冲区),数据将写入磁盘。

但是如果你写文本文件,你应该使用Writer;在这种情况下,我们可以将 FileWriterBufferedWriter 进行比较:

看着

FileWriter fw = new FileWriter(...)

BufferedWriter bw = new BufferedWriter(new FileWriter(...)

关于 I/O 操作的数量,您有相同的情况。


FileWriter 在内部使用 FileOutputStream。使用 FileWriter 的原因是当您写入文件时它会自动使用默认字符编码(例如,Java 内部字符串被编码为 UTF-8)。如果您使用 OutputStream,则必须在每次写入时手动编码:

所以这个BufferedWriter的例子:

bw.write("Hello");

对应于 BufferedOutputStream 的示例:

bos.write("Hello".getBytes(Charset.forName("utf-8")));

如果您的默认编码是 utf-8

OutputStream 处理(原始)字节,而 Writer 处理(文本)字符。

关于java - 性能:BufferedOutputStream 与 FileWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com