gpt4 book ai didi

java - 用于创建大型 CSV 文件的 Java IO 最佳实践

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

您好,我需要创建几个大型 CSV 文件,整个文件的数量可能是 200 万。所以我想知道如何有效地做到这一点..因此我想到了几个问题

1 。当我们通过 BufferedWriter 写入文件时,我们应该多久刷新一次?但是我认为 bufferedWriter 维护自己的缓冲区,一旦缓冲区已满,它就会自动刷新它,如果是这种情况,那么为什么还有 flush 方法呢??

  1. 因为我要创建的文件会很大。所以当我开始写文件时,文件会自动提交到磁盘吗?? (在调用 writer.close() 之前)或整个文件保留在主内存中直到我关闭 writer?。

    • 通过提交我的意思是已经写入的部分没有任何部分在主内存中,即它已准备好进行 GC

最佳答案

  1. BufferedWriter 实现应该在适当的时候很好地完成刷新工作。在您的情况下,您永远不需要调用 flush

    至于为什么会有flush方法,这是因为有时候你会希望输出立即写入,而不是等待BufferedWriter的缓冲区变满。 BufferedWriter 不仅适用于文件;它还可以用于写入控制台或套接字。例如,您可能希望通过网络发送一些数据,但数据不足以导致 BufferedWriter 自动刷新。为了立即发送此数据,您将使用 flush

  2. 您写入BufferedWriter 的所有数据不会同时保留在内存中。当 BufferedWriter 的缓冲区填满时,它被分段(刷新)写出。在最后调用 close 后,BufferedWriter 将对其缓冲区中尚未写入磁盘的所有内容进行最后一次刷新并关闭文件。

关于java - 用于创建大型 CSV 文件的 Java IO 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573838/

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