2014-01-22 105 views
0

我有一個zip文件中兩個文件。加入兩個不同的文件壓縮成zip內的一個文件(或其他地方壓縮)文件

現在,想象一下這兩個文件都大了...真的很大......這麼大,我不能解壓他們到我老了,可憐的,微小的硬盤。 但是,它們是簡單的txt文件,所以壓縮版本非常小。

我需要兩個文件連接成一個單一的文件。 由於它們太大而無法提取,因此我需要在zip內部執行此操作。 有沒有辦法做到這一點?

實施例:

「compressed.zip」 包含 「part_1.txt」 和 「part_2.txt」。 我想要「compressed.zip」包含一個文件,稱爲「part_1_and_2.txt」。

(如果這是不可能的拉鍊,我可以挑選另一壓縮機...但這個想法是一樣的:每個未經壓縮的文件比我的硬盤的總容量更大)

TNX!

回答

0

好像你只需要確保存儲要求低;我不認爲操作需要在「zip文件」本身內部進行。

開始用柏油,gzip壓縮,在它的輸入文件的文件:您可以使用命令行工具(在Linux或通過Cygwin的類似的工具),通過以下方式做到這一點。讓它被壓縮.tar.gz。然後,你可以提取gzip壓縮的tar歸檔文件的內容到標準輸出和管道回的gzip:

tar xzf compressed.tar.gz -O | gzip > part_1_and_2.txt.gz 

得到的壓縮文件是part_1.txt和part_2.txt的串接文本(雖然我認爲這是不同於具有包含一個文件的tar檔案,但也許這就足夠了)。

如果您需要在程序中執行此操作,我猜想libtarzlib可以通過編程方式執行此功能,也可以從程序運行腳本。

+0

我會嘗試這一點,但我有一個問題:當腳本提取的gzip壓縮tar歸檔到標準輸出的內容,以管他們回到gzip的,如果沒有空間,他們會發生什麼? 我這樣問,因爲tar.gz文件的未壓縮內容超過了我的硬盤的可用大小。腳本仍然應該工作嗎? Tnx – user3131164

+0

是的,即使磁盤或內存中沒有空間用於解壓縮的壓縮文件,也應該可以工作。每一步都通過管道逐步讀取先前的結果,並寫入管道直至最後。一個tar文件可以被增量處理;它只是一堆粘在一起的文件記錄。 – amdunn

0

您可以使用libzip(依次使用zlib)依次從輸入文件中讀取未壓縮的數據並寫入新的輸出zip文件。您不需要將全部未壓縮文件存儲在大容量存儲器或內存中。您可以一次讀寫一個小塊,就像不使用壓縮一樣。我認爲你在這三個zip文件的海量存儲上都有空間。

相關問題