2012-06-11 2 views
1

Я пытаюсь создать почтовый файл этим кодом, но ничего не работает, то constractor из ZipFile не получает () только перегрузки с аргументами, и я не метод SAVE ? Что не так?Проблемы при создании ZIP-файл в C#

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 была использована в коде ur. –

+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);      
}    

EDIT: Для того, чтобы добавить аль 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

'private void ZipFolder()' не работает на 100%, он только сжимает файлы в 'folderName' без подкаталогов. – Oleg

+0

Да, это пример, взятый из моего собственного кода, где мне не нужно застегивать подпапки. – Steve

+0

На этом же сайте есть пример того, что вам нужно. [Посмотрите на это] (http://stackoverflow.com/questions/7977668/sharpziplib-library-compress-a-folder-with-subfolders-with-high-level-compresion) – Steve

 Смежные вопросы

  • Нет связанных вопросов^_^