gpt4 book ai didi

java - FileWriter 是否缓冲?

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

我想知道 FileWriter 是否被缓冲。

this所以问题,似乎是,但是在this所以问题似乎不是(每次调用 write(..) 时都是系统调用)。

所以,基本上,阅读那两个问答,我有点困惑。有谁能解释清楚吗?

编辑:通过阅读解决问题 this我引用相关部分的API:

Each invocation of a write() method causes the encoding converter tobe invoked on the given character(s). The resulting bytes areaccumulated in a buffer before being written to the underlying outputstream. The size of this buffer may be specified, but by default it islarge enough for most purposes. Note that the characters passed to thewrite() methods are not buffered.

For top efficiency, consider wrapping an OutputStreamWriter within aBufferedWriter so as to avoid frequent converter invocations. Forexample:

Writer out = new BufferedWriter(newOutputStreamWriter(System.out));

由于 FileWriter 扩展了 OutputStreamWriter,它也适用于它。

谢谢你抽出时间,我知道我问了一些非常具体的问题。

最佳答案

事实上,FileWriter 确实有内部缓冲。缓冲区是一个 ByteBuffer(默认大小为 8192 字节)。您可以在 outputStreamWriter 用于将字符编码为所选字符集/编码的 sun.io.cs.StreamEncoder 对象中找到它。

我查看了 Java 17 OpenJDK 源代码来确定这一点。这是一个实现细节,可能会因 Java 版本...和供应商而异。

关于java - FileWriter 是否缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899572/

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