2012-02-23 98 views
0

我的程序生成两个文件。产生的第一个通常是巨大的,通常大约20GB。之后的那个是'单行'文件。第二个文件的内容(一行)是第一个文件的标题。所以我的输出应该是一个结合了这两者的文件。在内存约束上,我无法创建另一个文件来合并这两个文件。什么是最好的方式来解决这个问题?合并两个文件而不创建另一个文件

+0

您是否事先知道标题行的* length *,即在您编写大文件之前? – NPE 2012-02-23 15:51:46

+0

你对文件生成有任何控制权吗? – JProgrammer 2012-02-23 15:53:15

+0

@aix - no。但它总是一条线。 – DragonBorn 2012-02-23 15:55:15

回答

1

在文件的中间你不能只是“插入”数据。使用RandomAccessFile将覆盖已写入文件特定位置的数据。

因此,第一个解决方案是(如果可能的话)创建标题,然后附加20GB。如果这是不可能的,但你可以估计你的头文件的长度(以字节为单位),你可以在文件的开始处写入相同长度的垃圾,然后写入你的数据,然后到文件的开头并写入(覆盖)标题。

相关问题