2017-03-16 77 views
-1


我已經寫了一個小的應用程序,壓縮文件,並刪除它們使用DotNetZip,
它實現對文件進行壓縮到1.4 GB拉鍊
大概拉鍊大那麼這是轟然
荏苒文件數量巨大(郵政編碼結果超過1GB)

這裏我得到的堆棧跟蹤:

at Ionic.Zip.ZipFile.Save() 
    at Ionic.Zip.ZipFile.Save(String fileName) 
    at CustomFileCompressor.Program.ParallelCompress(List`1 relevantFiles, Int32 
zipYear, Int32 zipMonth, String outputFile) in d:\C#\CustomFileCompressor\Custom 
FileCompressor\CustomFileCompressor\Program.cs:line 135 
    at CustomFileCompressor.Program.Main(String[] args) in d:\C#\CustomFileCompre 
ssor\CustomFileCompressor\CustomFileCompressor\Program.cs:line 78 

這裏是壓縮代碼,我試圖將其分割爲1GB Zip文件
線78是一個調用下面

line 78: ParallelCompress(FilesInMonth, zipYear, zipMonth, outFile); 


static void ParallelCompress(List<FileInfo> relevantFiles, int zipYear, int zipMonth, string outputFile) 
    { 
     List<string> filesToZip = relevantFiles.Select(fi => fi.FullName).ToList(); 
     using (ZipFile zip = new ZipFile()) 
     { 
      string outputfile = string.Format(outputFile, zipYear, zipMonth); 
      zip.MaxOutputSegmentSize = 1024 * 1024; 
      zip.AddFiles(filesToZip, true, ""); 

      zip.Save(outputfile); 
     } 
    } 
+0

嗯......它看起來像是從堆棧跟蹤的開始缺少一些信息。 –

+0

切斷異常會刪除堆棧跟蹤的有用部分,你知道嗎? – TZHX

+0

這就是堆棧跟蹤,是不是夠了? 'catch(Exception ex) {Console.WriteLine(ex.StackTrace)}' –

回答

0

問題的功能解決了
顯然我錯過了一個配置
加入

zip.UseZip64WhenSaving = Zip64Option.Always; 

改變功能到下面後:

static void ParallelCompress(List<FileInfo> relevantFiles, int zipYear, int zipMonth, string outputFile) 
    { 
     List<string> filesToZip = relevantFiles.Select(fi => fi.FullName).ToList(); 
     using (ZipFile zip = new ZipFile()) 
     { 
      string outputfile = string.Format(outputFile, zipYear, zipMonth); 
      zip.ParallelDeflateThreshold = 0; 
      zip.UseZip64WhenSaving = Zip64Option.Always; 
      zip.MaxOutputSegmentSize = 1024 * 1024 * 1024; 
      zip.AddFiles(filesToZip, true, ""); 

      zip.Save(outputfile); 
     } 
    } 

它解決了壓縮
謝謝對於有用的意見