如何有效地使用java中的opencsv将行行附加到现有的csv文件?

时间:2011-09-21 18:30:14

标签: java csv opencsv

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

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

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

感谢。

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

1 个答案:

答案 0 :(得分:1)

为什么不在后台线程缓冲你的写入(提交一堆行,每当数字> N或时间累计> T写入磁盘)或者你总是需要瞬时一致的结果吗?

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

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