2014-06-11 63 views
0

我有一个超级奇怪的问题。我使用SharpZipLib库来生成.zip。我发现.zip的大小比我的文本文件的总大小要大一些。我不知道什么是错的。我也试图谷歌,但我找不到任何与我的情况有关。这是我的代码:为什么在SharpZipLib中压缩文件的大小比未压缩的大?

protected void CompressFolder(string[] files, string outputPath) 
    { 
     using (ZipOutputStream s = new ZipOutputStream(File.Create(outputPath))) 
     { 
      s.SetLevel(0); 
      foreach (string path in files) 
      { 
       ZipEntry entry = new ZipEntry(Path.GetFileName(path)); 
       entry.DateTime = DateTime.Now; 
       entry.Size = new FileInfo(path).Length; 
       s.PutNextEntry(entry); 
       byte[] buffer = new byte[4096]; 
       int byteCount = 0; 
       using (FileStream input = File.OpenRead(path)) 
       { 
        byteCount = input.Read(buffer, 0, buffer.Length); 
        while (byteCount > 0) 
        { 
         s.Write(buffer, 0, byteCount); 
         byteCount = input.Read(buffer, 0, buffer.Length); 
        } 
       } 
      } 
     } 
    } 
+2

你压缩文本或二进制/图片/文字文件等? 正常情况下,如果您的原始文件已被压缩,则压缩会导致稍大的文件 –

+0

如果压缩压缩文件,结果会比以前更大。你的文件已经被压缩了吗?在回答之前先看看。 – Will

+0

我的文件是文本文件。我试图手动压缩,zip文件的大小比我从SharpZipLib获得的zip文件小很多。 – user1412944

回答

6

0的压缩级别信号表示SharpZipLib存储而不是压缩。

较大尺寸是因为邮编次显微组织的(文件名等)

那么您的解决方案是将级别更改为高,即:

s.SetLevel(9); 
+0

谢谢,它的作品! – user1412944