2012-02-23 95 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。如果這是不可能的,但你可以估計你的頭文件的長度(以字節爲單位),你可以在文件的開始處寫入相同長度的垃圾,然後寫入你的數據,然後到文件的開頭並寫入(覆蓋)標題。

相關問題