IRONZIPの使用

フォルダー内のファイルをC#を使用して圧縮する方法

チャクニット・ビン
チャクニット・ビン
2024年2月18日
共有:

ZIPファイルとは、ZIP形式で圧縮された1つ以上のファイルやフォルダを含むファイルです。 複数のファイルやフォルダを1つのファイルに圧縮してアーカイブする一般的な方法です。データサイズを小さくし、ディスクスペースを節約し、インターネット上でのファイル転送を容易にします。 この記事では、ZIPファイルをC#で扱う方法を、IronZIPライブラリを使用して学びます。 プログラムでZIPファイルを作成、読み込み、解凍、更新する方法や、暗号化、パスワード保護、圧縮レベルといったIronZIPの様々な機能を使用する方法を紹介します。 この記事を読み終わる頃には、IronZIPを使ってC#アプリケーションでZIPファイルを簡単に扱えるようになるだろう。

この記事で取り上げる内容

  1. IronZIPをプロジェクトにインストールします。

  2. ZIPファイルの作成

  3. パスワードで保護されたZIPファイルの作成

  4. ZIPファイルを展開する

  5. パスワードで保護されたZIPファイルを解凍する

  6. 既存のZIPアーカイブへのアクセス

IronZIPとは?

IronZIP は、プログラムでZIPファイルを作成、読み取り、抽出することができる強力で多用途なC# ZIPアーカイブライブラリです。 それは、ZIPTARGZIP、およびBZIP2など、さまざまなアーカイブ形式をサポートしています。 また、パスワード保護、暗号化、圧縮レベルをサポートしています。 IronZIP は.NET 8、7、6、コア、スタンダード、フレームワークと互換性があります。

IronZIPは、ZIPファイルを扱う様々なユースケースや利点に対応します:

  1. バックアップシステムの作成: 重要なファイルやフォルダを圧縮し、暗号化して ZIP アーカイブにまとめ、IronZIP を使用して安全な場所に保存することができます。 こうすることで、ディスク容量を節約し、不正アクセスからデータを守ることができる。

  2. メール添付ファイルの送信: メール添付ファイルのサイズを減らすために、IronZIP を使用して ZIP ファイルに圧縮することができます。これにより、ファイルサイズ制限を超えることを避け、送信プロセスをスピードアップすることができます。

  3. ウェブからファイルをダウンロード:ソフトウェアパッケージ、ドキュメント、画像、その他の種類のファイルなど、ウェブからZIPファイルをダウンロードして抽出するためにIronZIPを使用できます。 これにより、帯域幅と時間を節約し、必要なファイルに簡単にアクセスすることができます。

IronZIPを始めよう

コードを書く前に、IronZIP NuGet PackageをC#プロジェクトにインストールする必要があります。 IronZIPは、NuGet経由で利用可能な一般的な圧縮ライブラリです。

IronZIPライブラリのインストール

IronZIPをインストールするには、Visual StudioのNuGetパッケージマネージャーコンソールを使用します。 以下のコマンドを実行してください:

Install-Package IronZip

または、公式のIronZIPウェブサイトから直接パッケージをダウンロードすることができます。インストール後、C#コードの先頭に次の名前空間を追加することで開始できます。

using IronZip;
using IronZip;
Imports IronZip
$vbLabelText   $csharpLabel

C#(シーシャープ)とZIPファイルのフォルダファイルの作成

IronZIPを使えば、フォルダ内のZIPファイルを簡単に作成することができる。以下のコードは指定されたディレクトリのすべてのファイルをZIP圧縮します。

static void Main(string [] args)
{
    string [] fileArray = Directory.GetFiles(@"D:\Docs\");
    using (var archive = new IronZipArchive())
    {
        foreach (var file in fileArray)
        {
            // Add files to the ZIP
            archive.Add(file);
        }
        // Export the ZIP
        archive.SaveAs("myZipFile.zip");
    }
}
static void Main(string [] args)
{
    string [] fileArray = Directory.GetFiles(@"D:\Docs\");
    using (var archive = new IronZipArchive())
    {
        foreach (var file in fileArray)
        {
            // Add files to the ZIP
            archive.Add(file);
        }
        // Export the ZIP
        archive.SaveAs("myZipFile.zip");
    }
}
Shared Sub Main(ByVal args() As String)
	Dim fileArray() As String = Directory.GetFiles("D:\Docs\")
	Using archive = New IronZipArchive()
		For Each file In fileArray
			' Add files to the ZIP
			archive.Add(file)
		Next file
		' Export the ZIP
		archive.SaveAs("myZipFile.zip")
	End Using
End Sub
$vbLabelText   $csharpLabel

上記のC#(シーシャープ)コードはIronZIPライブラリを使用して、すべてのファイルを1つのZIPファイルに圧縮します。このコードでは以下のことを行っている:

  • 私たちは fileArray という名前の文字列配列を宣言し、ディレクトリのパス ("D:\Docs") をパラメータとして渡す Directory.GetFiles メソッドの結果をそれに割り当てました。 このメソッドは、指定されたディレクトリ内のすべてのファイルの完全な名前を含む文字列の配列を返す。
  • メモリ上のZIPアーカイブを表すIronZipArchiveクラスの新しいインスタンスを作成しました。 インスタンスはarchiveという変数に代入され、usingステートメントでラップされる。
  • そして、foreachループを使ってfileArray配列を繰り返し、ファイルごとにアーカイブオブジェクトのAddメソッドを呼び出し、パラメータとしてファイル名を渡しています。 このメソッドはZIPアーカイブに新しいエントリーを追加する。
  • 最後に、アーカイブオブジェクトのSaveAsメソッドを呼び出し、引数としてZIPファイルの名前("myZipFile.zip")を渡しました。 この方法は、ZIPアーカイブを現在のファイルシステム内のファイルに保存する。

    このようにして、わずか数行のコードで簡単に新しいzipアーカイブを作成することができる。

出力

出力は以下の通り:

C#を使用したフォルダー内のファイルをZIPする方法: 図1 - 前のコード例からの出力ファイル

パスワードで保護されたZIPファイルの作成

IronZIPは、パスワードで保護されたZIPファイルを作成する最も簡単な方法を提供します。 以下のコード・サンプルは、ファイルを圧縮し、パスワード付きの新しいZIPファイルを作成します。

using (var archive = new IronZipArchive())
 {
     foreach (var file in fileArray)
     {
         // Add files to the ZIP
         archive.Add(file);
     }
    // Set Password and Encryption Method
     archive.Encrypt("myPa55word", EncryptionMethods.AES256);
     // Export the ZIP
     archive.SaveAs("myZipFile.zip");
 }
using (var archive = new IronZipArchive())
 {
     foreach (var file in fileArray)
     {
         // Add files to the ZIP
         archive.Add(file);
     }
    // Set Password and Encryption Method
     archive.Encrypt("myPa55word", EncryptionMethods.AES256);
     // Export the ZIP
     archive.SaveAs("myZipFile.zip");
 }
Using archive = New IronZipArchive()
	 For Each file In fileArray
		 ' Add files to the ZIP
		 archive.Add(file)
	 Next file
	' Set Password and Encryption Method
	 archive.Encrypt("myPa55word", EncryptionMethods.AES256)
	 ' Export the ZIP
	 archive.SaveAs("myZipFile.zip")
End Using
$vbLabelText   $csharpLabel

archive.Encrypt("myPa55word", EncryptionMethods.AES256); IronZIPを使用してZIPアーカイブにパスワード("myPa55word")を設定します。これにより、AES-256暗号化をアーカイブに適用してセキュリティを強化し、正しいパスワードを持つユーザーのみがその内容にアクセスできるようにします。 この機能は、C#(シーシャープ)アプリケーション内での保存や転送中に機密データを保護するのに有効です。 第2パラメータに、暗号化アルゴリズムの指定モードを渡す必要がある。

ファイルは以下のように暗号化される。

出力

C# を使用してフォルダ内のファイルを圧縮する方法: 図 2 - 前のコード例から出力された暗号化ファイル

ここまで、指定されたパスからディレクトリをループしてZIPファイルを作成するデモを見てきた。 では、ファイルを解凍する例を見てみよう。

ZIPアーカイブからファイルを取り出す

IronZIPはC#(シーシャープ)でZIPアーカイブからファイルを抽出するメソッドを提供します。 以下のコードサンプルは、ZIPアーカイブ内の圧縮ファイルを展開します。

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles")
$vbLabelText   $csharpLabel

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles"); はIronZIPを使って "myZipFile.zip "からすべてのファイルを取り出し、"myExtractedFiles "ディレクトリに置きます。 この簡潔なメソッドは、C#(シーシャープ)でZIPアーカイブを抽出するプロセスを簡素化し、ファイル抽出タスクに便利なソリューションを提供します。

出力

出力はこうだ:

C#を使ってフォルダー内のファイルを圧縮する方法: 図3 - 前のコード例から出力されたファイル

パスワードで保護されたZIPファイルから解凍する方法

IronZIPは、パスワードで保護されたZIPファイルを解凍する方法も提供します。 以下のコードは、IronZIPメソッドを使用して、指定されたZIPファイルから既存のすべてのファイルとディレクトリを展開します。

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word")
$vbLabelText   $csharpLabel

IronZipArchive クラスの ExtractArchiveToDirectory メソッドは、ZIP アーカイブから指定したディレクトリにすべてのエントリを展開します。 そのメソッドには3つの引数が渡されます: ZIPファイルのパス(「myZipFile.zip」)、宛先ディレクトリのパス(「myExtractedFiles」)、およびZIPファイルのパスワード(「myPa55word」)。

この方法で、パスワードで保護されたzipファイルを簡単に取り出すことができる。

既存のアーカイブにアクセスする方法

IronZIP は、既存のアーカイブにアクセスし、ファイル内に存在するすべてのエントリを表示する方法を提供します。

using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
    // Get Entries list
    List<string> names = archive.GetArchiveEntryNames();
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }
}
using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
    // Get Entries list
    List<string> names = archive.GetArchiveEntryNames();
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }
}
Using archive = New IronZipArchive("myZipFile.zip", "myPa55word")
	' Get Entries list
	Dim names As List(Of String) = archive.GetArchiveEntryNames()
	For Each name As String In names
		Console.WriteLine(name)
	Next name
End Using
$vbLabelText   $csharpLabel

提供されたC#のコードは、"myPa55word "というパスワードで "myZipFile.zip "というZIPファイルをロードすることにより、安全なIronZIPArchiveインスタンスを作成するためにIronZIPを使用しています。 ファイルが暗号化されていない場合は、passwordパラメータを渡さないでください。 次に、暗号化されたZIPアーカイブ内のエントリ名(ファイル名およびフォルダー名)のリストを取得して印刷します。

GetArchiveEntryNamesメソッドでエントリー名を収集し、for-eachループでそれぞれの名前をコンソールに出力します。 これは、IronZIPがパスワードで保護されたZIPアーカイブからのセキュアなアクセスと簡潔な方法でのエントリ情報の検索を可能にすることを示しています。

出力

フォルダー内のファイルをC#で圧縮する方法: 図4 - 前のコード例からの出力

結論

結論として、IronZIPはZIPファイルを扱うための堅牢で多機能なC#ライブラリである。 その機能は基本的な圧縮抽出を超え、パスワード保護、暗号化、さまざまなアーカイブ形式との互換性などを提供します。 バックアップシステムの作成、Eメールの添付ファイルの管理、ウェブからのファイルのダウンロードなど、IronZIPはこれらのタスクをシンプルかつ効率的に合理化します。

IronZIPをC# (シーシャープ)アプリケーションに統合することで、ZIPファイルの処理、データセキュリティの強化、ファイル転送プロセスの最適化のための強力なツールを得ることができます。 必要に応じて無料のトライアルを利用できます。

チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。
< 以前
C#でディレクトリにZipアーカイブを抽出する方法
次へ >
VB .NETでZipファイルを抽出する方法