34

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

  • System.IO.Packaging名前空間を使用しますか?
  • シェルとの相互運用を使用しますか?
  • .NET 用のサードパーティ ライブラリ?
  • オープン ソースの管理されていない DLL との相互運用性はありますか?

[Framework 3.5 をターゲットにすることができます。最高 = 設計、実装、および保守が最も簡単です。]

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

4

8 に答える 8

23

I've always used SharpZipLib

Forgot the why part: Mainly because its been around for a long time. It is well documented, and has an intuitive API. Plus it's open source if you're into that type of thing.

于 2008-12-21T21:11:36.650 に答える
16

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

あるポスターが提供した 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 Framework v2.0 と 3.5 で動作します。ZIP ファイル、Unicode ファイル名、コメント、パスワードを処理します。ZIP64 と自己解凍アーカイブを実行します。これは速い。それを試してみてください。

于 2009-01-04T03:47:09.623 に答える
16

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

于 2008-12-21T21:19:10.520 に答える
15

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

Directory.CreateDirectoryまず、ファイルを新しいフォルダー ( 、 )に準備する必要があります。File.Move次に、ZipFile.CreateFromDirectoryメソッド(リンクされたページから適応) を使用できます。

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

ZipFile.CreateFromDirectory(filePathOfNewFolder, zipFilePath);
于 2014-05-09T08:49:32.387 に答える
2

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

于 2008-12-22T03:46:32.233 に答える
2

The GZipStream and DeflateStream classes under System.IO.Compression namespace make it pretty easy to zip things up.

UPDATE: Comments correctly state that these classes do not allow you to manipulate a Zip file. However, the J# dlls contain the required functionality in java.util and java.io namespaces. For more details see the Code Project article by dmihailescu which details their use and provides sample code.

于 2008-12-21T21:15:15.270 に答える
1

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

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

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

于 2008-12-21T21:16:36.343 に答える