C#でファイルを解凍します

以前の投稿では、Aspose.ZIP for .NETを使用して、ファイルとフォルダーをZIPアーカイブに圧縮するさまざまな方法を学習しました。この投稿では、C#を使用してZIPアーカイブ内のファイルを抽出または解凍する方法を紹介します。また、パスワードで保護された、またはAESで暗号化されたZIPアーカイブをプログラムで抽出する方法についても説明します。この記事は次のセクションに分かれています。

ファイルを解凍するC#API

開始する前に、ダウンロードして、Aspose.ZIP for .NETを参照するか、プロジェクトでNuGet PackageManagerを使用してそのパッケージをインストールしたことを確認してください。

C#を使用してZIPファイルを解凍します

ZIPファイルを解凍するプロセスは、次の2つの方法で実行できます。

  • 各ファイルを個別にZIPで解凍します
  • 指定したフォルダにファイルを解凍します

最初の方法では、ZIPアーカイブ内の各ファイルに明示的にアクセスして解凍できます。さらに、抽出プロセスの進行状況を印刷できます。一方、2番目の方法では、ファイルを指定されたフォルダーに解凍するだけです。

アーカイブ内の各ファイルを個別に抽出する

以下は、ファイルにアクセスして抽出し、抽出の進行状況をC#で出力する手順です。

次のコードサンプルは、C#を使用してZIPアーカイブ内のファイルを抽出する方法を示しています。

// ZIPファイルを開く
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
	using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
	{
		// ZIPアーカイブの各エントリにアクセスする
		for (int i = 0; i < archive.Entries.Count; i++)
		{
			int percentReady = 0;
			// 抽出の進行状況をコンソールに記録します。
			archive.Entries[i].ExtractionProgressed += (s, e) =>
			{
				int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
				if (percent > percentReady)
				{
					Console.WriteLine(string.Format("{0}% decompressed", percent));
					percentReady = percent;
				}
			};
			// エントリのコンテンツをディスクに抽出します。
			archive.Entries[i].Extract(archive.Entries[i].Name);
		}
	}
}

ファイルをフォルダに抽出する

次の手順は、C#の特定のフォルダーにファイルを抽出するために使用されます。

  • FileStreamクラスを使用してZIPアーカイブを開きます。
  • Archiveクラスのインスタンスを作成し、ZIPのFileStreamオブジェクトで初期化します。
  • Archive.ExtractToDirectory(string)メソッドを使用してファイルを解凍します。

次のC#コードサンプルは、ファイルをフォルダーに解凍します。

// ZIPファイルを開く
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
	using (var archive = new Archive(zipFile))
	{
		// ファイルをフォルダに解凍します
		archive.ExtractToDirectory("Unzipped Files");
	}
}

パスワードで保護されたZIPファイルをC#で解凍します

Aspose.ZIP for .NETを使用して、パスワードで保護されたZIPアーカイブを解凍することもできます。このために必要なのは、ArchiveLoadOptionsクラスを使用してパスワードを指定することだけです。このクラスは、2番目のパラメーターとしてArchiveのコンストラクターに渡されます。

以下は、パスワードで保護されたZIPファイルを解凍するためのサンプルコードです。

// ZIPファイルを開く
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
	// パスワードを使用して復号化
	using (var archive = new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
	{
    		// ファイルをフォルダに抽出します
		archive.ExtractToDirectory("Unzipped Files");
	}
}

C#でAES暗号化ZIPファイルを抽出する

ZIPアーカイブはAES暗号化で暗号化することもできます。 Aspose.ZIP for .NETは、AES128、AES192、およびAES256暗号化方式によるアーカイブの暗号化をサポートしています。 AES暗号化ZIPファイルを解凍することは、パスワードで保護されたZIPファイルを解凍することに似ています。 ArchiveLoadOptionsクラスを使用して復号化パスワードを指定するだけで、残りはAPIによって処理されます。

次のコードサンプルは、C#でAES暗号化ZIPファイルを解凍する方法を示しています。

// ZIPファイルを開く
using (FileStream zipFile = File.Open("encrypted.zip", FileMode.Open))
{
  	// 復号化してフォルダに抽出
	new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory("decrypted");
}

無料のAPIライセンスを取得する

無料の一時ライセンスを取得することで、評価の制限なしにAspose.ZIPfor.NETを使用できます。

結論

この記事では、C#を使用してZIPファイルを解凍する方法を学習しました。さらに、パスワードで保護されたZIPアーカイブ内のファイルを解凍する方法を見てきました。コードサンプルは、C#で暗号化されたZIPアーカイブ内のファイルを抽出する方法も示しています。 ドキュメントを使用して、Aspose.ZIPfor.NETの詳細を調べることができます。

関連記事