web-dev-qa-db-ja.com

.NETでZipアーカイブを作成するための最良/最も簡単な方法は何ですか?

どの方法が「最良」だと思いますか。

  • 使用 System.IO.Packaging名前空間?
  • シェルとの相互運用を使用しますか?
  • .NET用のサードパーティライブラリ?
  • オープンソースのアンマネージDLLと相互運用しますか?

[Framework3.5をターゲットにできます。最良=設計、実装、および保守が最も簡単です。]

選択したアプローチが最適であるとあなたが考える理由に主に興味があります。

34
Bill

私はいつも使ってきました SharpZipLib

理由の部分を忘れた:主にそれが長い間存在していたため。十分に文書化されており、直感的なAPIを備えています。さらに、そのようなことに興味があるなら、それはオープンソースです。

23
Greg Dean

DotNetZip 使い方はとても簡単です。完全に管理されているので気に入っています。シェルとのやり取りは必要ありません。プログラミングモデルは、シェルのモデルよりもシンプルでクリーンです。また、SharpZipLibや.NET3.0で追加されたPackagingクラスよりも単純です。それは無料で、小さく、積極的に維持されています。

1つのポスターが提供したJ#オプションよりもはるかに優れています-J#は巨大なランタイムであり、Zipサポートだけを取得するために飲み込む巨大なピルです。また、J#サポートは廃止されています。おそらく、J#に新しい依存関係を導入するのは良い考えではありません。

DotNetZipのサンプルコード:

  try
  {
      using (ZipFile Zip = new ZipFile(args[0], System.Console.Out))
      {
          Zip.AddDirectory(args[1]); // recurses subdirectories
          Zip.Save();
      }
  }
  catch (System.Exception ex1)
  {
      System.Console.Error.WriteLine("exception: " + ex1);
  }

DotNetZipは、.NET v2.0、3.0、3.5、およびCompact Frameworkv2.0および3.5で動作します。 Zipファイル、Unicodeファイル名、コメント、パスワードを処理します。 Zip64および自己解凍型アーカイブを実行します。これは速い。それを試してみてください。

16
Cheeso

DotNetZip Library がZipファイルを操作する最も簡単な方法であることがわかりました。 SharpZipLib は、はるかに強力で柔軟なソリューションです。

16
RedawgTS

これは今では古い質問だと思いますが、もっと最新の答えを追加したいと思いました。 .NET 4.5を使用している場合は、新しい組み込みの ZipFile class を使用して、プログラムで複数のファイルをZipフォルダーに簡単に保存できます。

まず、ファイルを新しいフォルダに準備する必要があります(Directory.CreateDirectoryFile.Move)そしてあなたは単に ZipFile.CreateFromDirectoryメソッド (リンクされたページから採用):

string filePathOfNewFolder = @"c:\example\start";
string zipFilePath = @"c:\example\result.Zip";

ZipFile.CreateFromDirectory(filePathOfNewFolder, zipFilePath);
14
Sheridan

System.IO.Compression名前空間のGZipStreamクラスとDeflateStreamクラスを使用すると、非常に簡単に圧縮できます。

更新:コメントは、これらのクラスではZipファイルを操作できないことを正しく示しています。ただし、J#dllには、Java.utilおよびJava.io名前空間に必要な機能が含まれています。詳細については、 Code Projectの記事 by dmihailescuを参照してください。これらの使用法の詳細と、サンプルコードが提供されています。

2
Matthew

Xceed Zipコンポーネントについては誰も言及していません。以前に使用したことがありますが、Zipファイルの作成やデータストリームの圧縮に最適です。私はそれを強くお勧めしますが、ライセンス料のトレードオフがあるかもしれません。

2
Berkshire

Framework 3.5をターゲットにしているので、System.IO.Packagingを使用します。これは、zip専用に設計されたライブラリであり、フレームワークが付属しているため、製品に必要な余分なDLLもありません。ただし、使用例はひどいものです。

シェルの使用はお勧めしません。まず、Windows XP以降でのみ機能します。しかし、それを気にしなくても、落とし穴は非常にたくさんあります(以前にやったことがありますが、それは私が本当に選択の余地はありませんでした)。

3.5をターゲットにしていない場合は、 SharpZipLib を使用します。これは非常に優れたライブラリであり、3.5を使用している場合でも検討することができます。

1
configurator

Ultimate Zipは、Zip、TAR、TGZ、GZアーカイブをオンザフライで簡単に作成および操作したり、以前に作成したアーカイブのコンテンツを.NETクロスプラットフォームで閲覧したりできる高性能で信頼性の高い圧縮コンポーネントです。アプリ。最高のデザインパターンと低レベルの.NET最適化が適用された純粋なC#で記述されており、.NETアプリケーションにパフォーマンス、信頼性、拡張性を提供します。このパッケージには、アーカイブの作成、圧縮、解凍の方法を示す、VB.NETおよびC#の多数のコードスニペットと完全に文書化された例が付属しています。

。NET用のUltimate Zipコンポーネント

0
brunoid