在逐行添加行时生成csv文件。换句话说,我将一行一行附加到文件的末尾。我使用opencsv读写csv文件。
问题是,我需要做一些处理,以便有一个新的行。所以我正在做的是读取现有的csv文件(~6mb文件),并添加一行并写入文件。比如
文件原来是x,我再加一行,文件现在是x+1。当然,这涉及到许多读和写操作。我怎样才能有效率地做这件事?这不是作业,也不是日志文件处理。这将做几次,但需要尽快完成。
谢谢。
我已经想过通过创建x个较小的csv文件然后合并它来创建大的csv文件。这似乎不太有效。也许这是愚蠢的问题,但是有没有任何方法可以在不读取和写入完整数据的情况下添加新行,因为瓶颈是每次向文件添加新行都会变得越来越慢。
为什么不在后台线程中缓冲写操作(提交一堆行,然后在number> N或timeelapsed> T时写入磁盘),或者您总是需要一个即时一致的结果?
同样,您通常可以使用SEEK追加(比读取整个内容便宜)。例如RandomAccessFile对象或FileOutputStream/FileWriter带追加参数。当然,这还是有点贵。
最后,6mb并不是那么大。为什么不把它全部读进去,然后懒洋洋地写呢?假设这是一个单独的JVM进程,将其保存在内存中是最简单的解决方案....