0

我在逐行添加行时生成一个 csv 文件。换句话说,我将一行一行地附加到文件的末尾。我使用 opencsv 来读取和写入 csv 文件。

问题是我需要做一些处理才能有一条新线。所以我正在做的是读取现有的 csv 文件(~6mb 文件)并添加一行并写入文件。所以就像

文件是 x。我再放一行,文件现在是 x+1。这当然涉及许多读写操作。我怎样才能有效地做到这一点。这不是作业,也不是日志文件处理。它将完成几次,但需要尽快完成。

谢谢。

我已经想过通过创建 x 个较小的 csv 文件然后合并它来创建大的 csv 文件。似乎效率不高。也许问起来很愚蠢,但是有没有办法在不读取和写入完整数据的情况下添加新行,因为瓶颈是每次将新行附加到文件时它都会变得越来越慢。

4

1 回答 1

1

为什么不只是在后台线程中缓冲您的写入(提交一堆行,并且每当 number > N 或 timeelapsed > T 写入磁盘)或者您是否总是需要瞬时一致的结果?

此外,您通常可以附加一个 SEEK(比阅读整个内容便宜)。示例是带有附加参数的 RandomAccessFile 对象或 FileOutputStream/FileWriter。当然,这仍然有点贵。

最后,6 MB 并不是那么大。为什么不把它全部读完然后懒洋洋地写呢?假设这是单个 JVM 进程,将其保存在内存中是最简单的解决方案......

于 2011-09-21T18:34:58.250 回答