2012-02-03 101 views
1

我一直在寻找它,但我一直无法找到它。我想知道是否可以Zip文件夹没有任何外部dll或任何外部参考 - 只是本机功能。使用Visual Basic 2010的Zip文件夹

我已经能够使用System.IO.Packaging压缩文件,但它不包括文件夹,我不能告诉它压缩父文件夹。

我知道有外部的DLL等,但我想知道是否有可能从本地的方式。

谢谢。

回答

2

最好的办法是使用第三方库。但是,如果你不能找到这篇博客文章,它描述了如何使用System.IO.Packaging实现它。 注意,这是c#不是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谈到有关第三方库和做手工。这也是一个很好的参考。