以前の投稿では、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#で出力する手順です。
- ZIPアーカイブをFileStreamオブジェクトで開きます。
- アーカイブのインスタンスをFileStreamオブジェクトで作成して初期化します。
- Archive.Entriesコレクションを使用してZIP内のファイルにアクセスします。
- ArchiveEntry.ExtractionProgressedイベントハンドラーを設定して、抽出の進行状況を出力します。
- ArchiveEntry.Extract(string)メソッドを使用してファイルを抽出/解凍します。
次のコードサンプルは、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の詳細を調べることができます。