2012-02-03 10 views
1

私はそれを探していて、見つけられませんでした。私は、外部DLLや外部参照がなくても、ネイティブ機能を備えたフォルダをZipできるかどうかを知りたかったのです。Visual Basic 2010のZipフォルダ

私はSystem.IO.PackagingでZipファイルを作成できましたが、フォルダは含まれていないため、親フォルダをZipにすることはできません。

外部DLLがあることは知っていますが、ネイティブな方法で作成できるかどうかを知りたいと思います。

ありがとうございます。

答えて

2

最善の策はサードパーティのライブラリを使用することです。しかし、あなたがSystem.IO.Packagingを使ってそれを行う方法を説明しているこのブログ記事を見つけられない場合は、 これはC#ではなくvbですが、フレームワークの使用例だけが必要です。サードパーティのライブラリについては、手動でそれをやって話すの参照another post by Jon Gallowayを投稿

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

。それも良い参考資料です。

関連する問題