Create ZIP in C#

ZIPアーカイブの紹介

ZIPアーカイブ は、1つ以上のファイルやフォルダーを単一のコンテナに圧縮して統合するために不可欠です。この形式は、ストレージや送信のためにファイルサイズを削減するだけでなく、メタデータ情報を保持し、ファイルの管理を容易にします。ZIPアーカイブは、ファイルのアップロード、ダウンロード、共有、暗号化によるセキュリティなどのタスクのために、デスクトップおよびWebアプリケーションで広く使用されています。

この記事では、C#でプログラム的にZIPアーカイブを作成するさまざまな方法を探ります。以下のことを学びます:

C# ZIPライブラリ

Aspose.ZIP for .NET は、.NETアプリケーション内でファイルやフォルダーを圧縮および解凍するために設計された堅牢なAPIです。ZIPアーカイブ内のファイルを保護するためのAES暗号化などの機能を提供します。APIは、NuGetから簡単にインストールするか、Downloadsセクションからバイナリをダウンロードできます。

C#でZIPアーカイブを作成する

ファイルをZIPアーカイブに圧縮するには、次の手順に従います:

  1. 出力ZIPアーカイブ用のFileStreamオブジェクトを作成します。
  2. _FileStream_オブジェクトを使用してソースファイルを開きます。
  3. Archiveクラスをインスタンス化します。
  4. Archive.CreateEntry(string, FileStream)メソッドを使用して、ファイルをアーカイブに追加します。
  5. Archive.Save(FileStream)メソッドを使用してZIPアーカイブを保存します。

以下は、C#を使用してファイルをZIPアーカイブに追加する方法を示すコードサンプルです:

C#で複数のファイルをZIPアーカイブに追加する

複数のファイルをZIPアーカイブに追加するには、次のいずれかの方法を選択できます:

FileStreamを使用する

_FileStream_クラスを利用して、Archive.CreateEntry(String, FileStream)メソッドで複数のファイルをZIPアーカイブに追加します。方法は以下の通りです:

FileInfoを使用する

また、FileInfoクラスを使用してファイルを追加することもできます。この方法では、_FileInfo_クラスを使用してファイルを読み込み、Archive.CreateEntry(String, FileInfo)メソッドでZIPアーカイブに追加します。以下の例を参照してください:

ファイルパスを使用する

ファイルパスをArchive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings)メソッドに提供することで、ファイルを直接追加することもできます。方法は以下の通りです:

C#でフォルダーをZIPアーカイブに追加する

フォルダーをZIPアーカイブに追加することは、複数のファイルを含める便利な方法です。C#でフォルダーをZIPするには、次の手順に従います:

  1. 出力ZIPアーカイブ用のFileStreamオブジェクトを作成します。
  2. Archiveクラスをインスタンス化します。
  3. DirectoryInfoクラスを使用して、ZIPするフォルダーを指定します。
  4. Archive.CreateEntries(DirectoryInfo)メソッドを使用して、フォルダーをZIPに追加します。
  5. Archive.Save(FileStream)メソッドを使用してZIPアーカイブを保存します。

以下は、C#でフォルダーをZIPアーカイブに追加する方法を示すコードサンプルです:

C#でZipCryptoを使用してパスワード保護されたZIPを作成する

セキュリティを強化するために、ZipCrypto暗号化を使用してパスワード保護されたZIPアーカイブを作成できます。これは、Archiveのコンストラクター内でArchiveEntrySettingsクラスを使用することで実現され、暗号化タイプを指定できます。

以下は、C#でZipCryptoを使用してパスワード保護されたZIPアーカイブを作成する例です:

AES暗号化を使用してパスワード保護されたZIPを作成する

Aspose.ZIP for .NETライブラリは、ZIPアーカイブを保護するためのAES暗号化もサポートしています。以下のAES暗号化方法から選択できます:

  • AES128
  • AES192
  • AES256

AES暗号化を適用するには、AesEcryptionSettingsクラスを使用します。以下は、C#でAES暗号化を使用してパスワード保護されたZIPを作成する方法です:

並列圧縮モードを設定する

複数のエントリを含む場合は、ParallelOptionsクラスを使用してAPIを並列圧縮用に構成できます。Aspose.ZIP for .NETは、いくつかの並列圧縮モードを提供します:

  • Never - 並列で圧縮しない。
  • Always - 常に並列で圧縮する(メモリ不足の問題に注意)。
  • Auto - エントリに基づいて並列圧縮を使用するかどうかを自動的に決定する。

以下は、複数のファイルをZIPする際に並列圧縮モードを設定する方法を示す例です:

C# .NET ZIPライブラリについてもっと学ぶ

以下のリソースを使用して、C# ZIP APIを深く掘り下げてください:

ZIPアーカイブをオンラインで試す

Aspose.ZIP for .NETに基づく無料オンラインアプリケーションを探索して、ファイルを簡単にZIPアーカイブに圧縮してください。

結論

この記事では、C#でプログラム的にZIPアーカイブを作成する方法を学びました。提供されたコードサンプルは、ファイルやフォルダーをZIPアーカイブに追加する方法を示しています。また、ZipCryptoおよびAES暗号化メソッドを使用してパスワード保護されたZIPアーカイブを作成する方法についても説明しました。大きなファイルを効率的に処理するための並列圧縮についても議論しました。質問がある場合やさらなる支援が必要な場合は、フォーラムを通じてお気軽にお問い合わせください。

関連項目

C#を使用してファイルを解凍または抽出するC#を使用してZIPアーカイブ内のファイルを解凍するC# .NETで7z(7-Zip)アーカイブを作成する
C# .NETで7z(7zip)ファイルを開くまたは抽出するC#を使用してGZipアーカイブを作成および抽出するC#を使用してRARファイルをZIPアーカイブに変換する
C#を使用してZIPアーカイブをTARに変換するC#でフラットZIPアーカイブを作成するC#で実行可能自己解凍アーカイブを作成する
C#でTAR.GZおよびTAR.XZファイルを作成するC#でZIPアーカイブ内のファイルを削除するC#でネストされたZIPアーカイブを抽出する
C#で複数のZIPまたはTARアーカイブをマージするZIPファイルを作成する方法7zをオンラインで抽出する