2017-04-04 66 views
1

雖然使用C#ziparchival類Zip文件提取跨區不支持錯誤。它適用於少量文件,但大小超過1 GB的文件會拋出「不支持分割或跨越檔案。」我沒有明白它的意思。如何解決它?分裂和而在c#zip文件提取

+0

沒有一個更具體的問題,包括[mcve]顯示你在做什麼,這是不可能回答。但是,.zip文件被限制爲4GB的,你可能會運行到個別條目上的大小有限制,否則只有通過寫來解決的「跨越」檔案(即其中一個整個檔案跨越兩個或者更多的文件在磁盤上)。 –

回答

0

DotNetZip可以讓你做到這一點。從他們的文檔:

庫支持ZIP密碼,統一,ZIP64,流輸入和輸出 ,AES加密,多重壓縮級別,自解壓 檔案,跨區檔案,等等。

0

隨着Dotnetzip庫,您可以壓縮甚至超過4 GB。使用filestreams和bytearrays也是一個很好的選擇。

using (ZipFile zip = new ZipFile()) { 
    zip.CompressionLevel = CompressionLevel.BestCompression; 
    zip.UseZip64WhenSaving = Zip64Option.Always; 
    zip.BufferSize = 65536*8; //buffer size 

    foreach (var file in filenames) { 
     zip.AddFile(file); 
    } 
    zip.Save(outpath); 
}