gpt4 book ai didi

FileWriter和BufferedWriter之间的Java区别

转载 作者:IT老高 更新时间:2023-10-28 13:52:50 25 4
gpt4 key购买 nike

它们之间有什么区别?我只是在学习 Java ATM,但似乎我可以双向写入文件,即(我没有在这里复制 try-catch block 。)

FileWriter file = new FileWriter("foo.txt");
file.write("foobar");
file.close();

FileWriter file = new FileWriter("foo.txt");
BufferedWriter bf = new BufferedWriter(file);
bf.write("foobar");
bf.close();

我理解了先缓存数据的概念,那是不是第一个例子一个一个地写入字符,第二个先把它缓冲到内存并写入一次?

最佳答案

如果你这样做,BufferedWriter 会更高效

  • 在刷新/关闭之间有多次写入
  • 与缓冲区大小相比,写入量很小。

在您的示例中,您只有一次写入,因此 BufferedWriter 只会增加您不需要的开销。

so does that mean the first example writes the characters one by one and the second first buffers it to the memory and writes it once

在这两种情况下,字符串都是一次写入的。

如果你只使用 FileWriter 你的 write(String) 调用

 public void write(String str, int off, int len) 
// some code
str.getChars(off, (off + len), cbuf, 0);
write(cbuf, 0, len);
}

这会进行一次系统调用,每次调用 write(String)。


BufferedWriter 提高效率的地方在于多次小写。

for(int i = 0; i < 100; i++) {
writer.write("foorbar");
writer.write(NEW_LINE);
}
writer.close();

如果没有 BufferedWriter,这可能会进行 200 (2 * 100) 次系统调用并写入磁盘,这是低效的。使用 BufferedWriter,这些都可以一起缓冲,并且由于默认缓冲区大小为 8192 个字符,因此这只需 1 个系统调用即可写入。

关于FileWriter和BufferedWriter之间的Java区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12350248/

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