gpt4 book ai didi

Java Bufferedwriter

转载 作者:行者123 更新时间:2023-11-30 07:10:33 29 4
gpt4 key购买 nike

File file = new File("result.csv");
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);

如果我们在写入完成后不关闭缓冲的写入器对象会发生什么?我的意思是如果我们错过了 bw.close() 怎么办?

最佳答案

如果您打开许多文件,并且不关闭它们,您的操作系统将在一段时间后无法再打开任何文件。

此外,虽然您的 BufferedWriter 尚未被垃圾回收,但就您的操作系统而言,它正在写入的文件将保持打开状态。如果是 Windows,您将无法删除文件,直到文件句柄关闭,无论是通过 BufferedWriter 最终被垃圾收集还是通过 JVM 退出。

  • BufferedWriter.close() 将缓冲区刷新到底层流,因此如果您忘记 flush() 并且没有关闭,您的文件可能没有你写的所有文字。

  • BufferedWriter.close() 还会关闭包装的 Writer。当它是一个 FileWriter 时,这最终将关闭一个 FileOutputStream 并告诉操作系统您已完成文件写入。

  • 垃圾收集器将自动调用close(),不是在BufferedWriter 或包装的FileWriter 上,而是在FileOuputStream 上.所以操作系统会很高兴,但你必须等待 GC。

  • 但是,您总是希望在不再需要操作系统资源时立即释放它们。这适用于打开的文件、数据库连接、打印队列……任何东西。在这一点上相信我。

  • BufferedWriter.close() 确实清除了内部字符缓冲区,因此内存可用于垃圾回收,即使 BufferedWriter 本身仍在范围。

检查 here了解更多详情

关于Java Bufferedwriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22141777/

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