どの方法が「最良」だと思いますか。
System.IO.Packaging名前空間を使用しますか?- シェルとの相互運用を使用しますか?
- .NET 用のサードパーティ ライブラリ?
- オープン ソースの管理されていない DLL との相互運用性はありますか?
[Framework 3.5 をターゲットにすることができます。最高 = 設計、実装、および保守が最も簡単です。]
私は主に、選択したアプローチが最適であるとあなたが考える理由に興味があります。
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.
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 と自己解凍アーカイブを実行します。これは速い。それを試してみてください。
DotNetZip ライブラリは、zip ファイルを操作する最も簡単な方法であることがわかりました。SharpZipLibは、はるかに強力で柔軟なソリューションです。
これは古い質問だと思いますが、最新の回答を追加したいと思いました。.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);
Xceed Zip コンポーネントについては誰も言及していません。以前に使用したことがありますが、zip ファイルの作成とデータ ストリームの圧縮に非常に適していました。強くお勧めしますが、ライセンス料のトレードオフがあるかもしれません。
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.
あなたはFramework 3.5をターゲットにしているので、私はSystem.IO.Packaging. これは圧縮専用に設計されたライブラリであり、フレームワークに付属しているため、製品に必要な追加の DLL さえありません。ただし、使用例はひどいものです。
シェルの使用はお勧めしません。まず、Windows XP 以降でのみ動作します。しかし、それを気にしなくても、落とし穴はたくさんあります (以前にやったことがありますが、本当に選択の余地がなかったからです)。
3.5 をターゲットにしていない場合は、SharpZipLib. これは非常に優れたライブラリであり、3.5 を使用している場合でも検討することができます。