2012-06-11 80 views
1

我想通過這個代碼來創建壓縮文件,但沒有任何工程,ZipFile中的constractor犯規得到 ()只與爭論超載了,我沒有SAVE方法? 什麼錯?在C#創建ZIP文件的問題

using (ZipFile zip = new ZipFile()) 
     { 
      zip.AddEntry("C://inetpub//wwwroot//Files//Wireframes//" + url, zip.Name); 
      zip.AddDirectory("C://inetpub//wwwroot//Files//Wireframes//" + url); 
      zip.Save(downloadFileName); 
     } 
+0

你使用的是什麼zip庫?該語法似乎來自DotNetZip,但您的標籤指示SharpZipLib。 – Steve

+0

提供更多關於DLL的信息已經在我們的代碼中使用過。 –

+0

我正在使用'ICSharpCode.SharpZipLib.Zip,ICSharpCode.SharpZipLib' – Oleg

回答

1

要壓縮整個目錄與SharpZipLib你可以試試這個方法:

private void ZipFolder(string folderName, string outputFile) 
    { 
     string[] files = Directory.GetFiles(folderName); 
     using (ZipOutputStream zos = new ZipOutputStream(File.Create(outputFile))) 
     { 
      zos.SetLevel(9); // 9 = highest compression 
      byte[] buffer = new byte[4096]; 
      foreach (string file in files) 
      { 
       ZipEntry entry = new ZipEntry(Path.GetFileName(file)); 
       entry.DateTime = DateTime.Now; 
       zos.PutNextEntry(entry); 
       using (FileStream fs = File.OpenRead(file)) 
       { 
        int byteRead; 
        do 
        { 
         byteRead = fs.Read(buffer, 0,buffer.Length); 
         zos.Write(buffer, 0, byteRead); 
        } 
        while (byteRead > 0); 
       } 
      } 
      zos.Finish(); 
      zos.Close(); 
     } 

正如你可以看到我們有一個非常不同的代碼從您的例子。
正如我在上面我的評論說,你的例子似乎來自DotNetZip 如果你想使用該庫的代碼將是:

using (ZipFile zip = new ZipFile())      
{       
    zip.AddFile("C://inetpub//wwwroot//Files//Wireframes//" + url); 
    zip.AddDirectory("C://inetpub//wwwroot//Files//Wireframes//" + url, "WireFrames"); 
    zip.Save(downloadFileName);      
}    

編輯:爲了在某個目錄

添加人PNG文件
using (ZipFile zip = new ZipFile())      
{       
    string filesPNG = Directory.GetFiles("C://inetpub//wwwroot//Files//Wireframes//" + url, "*.PNG); 
    foreach(string file in filesPNG) 
     zip.AddFile(file); 
    zip.Save(downloadFileName);      
}    
+0

'私人無效的ZipFolder()'不工作100%,它只壓縮'folderName'中沒有子目錄的文件。 – Oleg

+0

是的,這是一個從我自己的代碼中取得的例子,我不需要zip子文件夾。 – Steve

+0

在這個網站上有一個你需要的例子。 [看看這個](http://stackoverflow.com/questions/7977668/sharpziplib-library-compress-a-folder-with-subfolders-with-high-level-compresion) – Steve