どの方法が「最良」だと思いますか。
System.IO.Packaging
名前空間?[Framework3.5をターゲットにできます。最良=設計、実装、および保守が最も簡単です。]
選択したアプローチが最適であるとあなたが考える理由に主に興味があります。
私はいつも使ってきました SharpZipLib
理由の部分を忘れた:主にそれが長い間存在していたため。十分に文書化されており、直感的なAPIを備えています。さらに、そのようなことに興味があるなら、それはオープンソースです。
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および自己解凍型アーカイブを実行します。これは速い。それを試してみてください。
DotNetZip Library がZipファイルを操作する最も簡単な方法であることがわかりました。 SharpZipLib は、はるかに強力で柔軟なソリューションです。
これは今では古い質問だと思いますが、もっと最新の答えを追加したいと思いました。 .NET 4.5を使用している場合は、新しい組み込みの ZipFile
class を使用して、プログラムで複数のファイルをZipフォルダーに簡単に保存できます。
まず、ファイルを新しいフォルダに準備する必要があります(Directory.CreateDirectory
、File.Move
)そしてあなたは単に ZipFile.CreateFromDirectory
メソッド (リンクされたページから採用):
string filePathOfNewFolder = @"c:\example\start";
string zipFilePath = @"c:\example\result.Zip";
ZipFile.CreateFromDirectory(filePathOfNewFolder, zipFilePath);
System.IO.Compression名前空間のGZipStreamクラスとDeflateStreamクラスを使用すると、非常に簡単に圧縮できます。
更新:コメントは、これらのクラスではZipファイルを操作できないことを正しく示しています。ただし、J#dllには、Java.utilおよびJava.io名前空間に必要な機能が含まれています。詳細については、 Code Projectの記事 by dmihailescuを参照してください。これらの使用法の詳細と、サンプルコードが提供されています。
Xceed Zipコンポーネントについては誰も言及していません。以前に使用したことがありますが、Zipファイルの作成やデータストリームの圧縮に最適です。私はそれを強くお勧めしますが、ライセンス料のトレードオフがあるかもしれません。
Framework 3.5をターゲットにしているので、System.IO.Packaging
を使用します。これは、zip専用に設計されたライブラリであり、フレームワークが付属しているため、製品に必要な余分なDLLもありません。ただし、使用例はひどいものです。
シェルの使用はお勧めしません。まず、Windows XP以降でのみ機能します。しかし、それを気にしなくても、落とし穴は非常にたくさんあります(以前にやったことがありますが、それは私が本当に選択の余地はありませんでした)。
3.5をターゲットにしていない場合は、 SharpZipLib
を使用します。これは非常に優れたライブラリであり、3.5を使用している場合でも検討することができます。
Ultimate Zipは、Zip、TAR、TGZ、GZアーカイブをオンザフライで簡単に作成および操作したり、以前に作成したアーカイブのコンテンツを.NETクロスプラットフォームで閲覧したりできる高性能で信頼性の高い圧縮コンポーネントです。アプリ。最高のデザインパターンと低レベルの.NET最適化が適用された純粋なC#で記述されており、.NETアプリケーションにパフォーマンス、信頼性、拡張性を提供します。このパッケージには、アーカイブの作成、圧縮、解凍の方法を示す、VB.NETおよびC#の多数のコードスニペットと完全に文書化された例が付属しています。