2012-02-03 3 views
1

Я искал ее, и я не смог ее найти. Я хотел знать, можно ли Zip-папку без какой-либо внешней dll или каких-либо внешних ссылок - только с собственными функциями.Почтовая папка с Visual Basic 2010

Я смог заархивировать файлы с помощью System.IO.Packaging, но он не включает в себя папки, и я не могу сказать, что это Zip родительская папка.

Я знаю, что есть внешняя dll и так, но я хотел бы знать, можно ли сделать это с родного пути.

спасибо.

ответ

2

Ваш лучший выбор - использовать стороннюю библиотеку. Но если вы не можете найти этот блог, который описывает, как это сделать, используя System.IO.Packaging. Обратите внимание, что это C# not vb, но пример использования фреймворка - это все, что вам нужно.

http://weblogs.asp.net/albertpascual/archive/2009/05/18/creating-a-folder-inside-the-zip-file-with-system-io-packaging.aspx

private static void AddFileToZip(string zipFilename, string fileToAdd, string sDirectory) 
{ 
    using (Package zip = System.IO.Packaging.Package.Open(zipFilename, FileMode.OpenOrCreate)) 
    { 
     string destFilename = ".\\" + sDirectory + "\\" + Path.GetFileName(fileToAdd); 
     Uri uri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative)); 

     if (zip.PartExists(uri)) 
     { 
      zip.DeletePart(uri); 
     } 

     PackagePart part = zip.CreatePart(uri, "", CompressionOption.Normal); 

     using (FileStream fileStream = new FileStream(fileToAdd, FileMode.Open, FileAccess.Read)) 
     { 
      using (Stream dest = part.GetStream()) 
      { 
       CopyStream(fileStream, dest); 
      } 
     } 
    } 
} 

что пост ссылки another post by Jon Galloway, что переговоры о библиотеках 3 участника и делать это вручную. Это хорошая рекомендация.