ZIP アーカイブ形式
データが重要であり、ストレージ効率が最優先されるデジタル時代において、ZIP アーカイブは、ファイルの圧縮と整理のための安定したユビキタスなソリューションであり続けています。
ZIPアーカイブ情報について
ZIP は、暗号化の有無にかかわらず、1 つまたは複数の可逆圧縮ファイルとフォルダーを保持できるアーカイブ形式です。 ZIP は 30 年以上前から知られている最も一般的な形式であり、事実上すべての最新のオペレーティング システムでサポートされています。この形式は、JAR や OpenDocument などの他の形式にも拡張されました。
ZIP アーカイブ ファイル形式の履歴情報
ZIP の最初の形式仕様は 1989 年に公開されました。ZIP のアイデアの作成者は Phil Katz と Gary Conway でした。ファイル サイズの削減効率が高く、低速のインターネット接続や当時の限られたストレージ容量でもファイルの保存と送信が容易になったため、すぐに成功を収めました。 1993 年以来、最も一般的な Deflate 圧縮方法をサポートしています。強力な AES 暗号化は 2003 年に導入されました。非常に古い標準であるにもかかわらず、この標準は化石化せず、現在でも積極的に開発されています。そこで 2020 年に、Zstandard、MP3、XZ 圧縮方式で拡張されました。
ZIPアーカイブの構造
ZIP アーカイブは、圧縮ファイルを効率的に保存および整理しながら、アーカイブ内の個々のファイルに簡単にアクセスできるように、この階層構造で設計されています。 アーカイブの各エントリは個別に圧縮され、独自の圧縮および暗号化方法を使用する場合もあります。アーカイブ内のエントリには、元のファイルのメタデータを含むヘッダーが先行します。目次はファイルの最後にあります。このようなアプローチでは、自己解凍 (SFX) アーカイブを作成できます。また、実行可能部分が SFX ファイルの先頭に存在するため、有効な ZIP アーカイブのままになります。
ZIP 圧縮方法
最新の ZIP では、Deflate、Deflate64™、BZIP2、LZMA、XZ、PPMd、Zstandard アルゴリズムを使用してデータを圧縮できます。ファイルを圧縮せずに保存することもできます。最も一般的なのは Deflate で、これはどのアーカイバ ツールでもデフォルトです。特定のファイル (MP3、JPEG、WAV) の可逆圧縮用のアルゴリズムもあります。 Aspose.ZIP は、Deflate、Deflate64™、Bzip2、LZMA、XZ、PPMd、および Zstandard メソッドを完全にサポートしています。 WavPack 圧縮オーディオを抽出できます。
ZIP アーカイブでサポートされている操作
Aspose.ZIP を使用すると、ZIP アーカイブをさまざまな方法で処理できます。アーカイブを作成したり、再パックせずに既存のアーカイブにエントリを追加したり、アーカイブの残りの部分に影響を与えずに既存のアーカイブからエントリを削除したり、任意のエントリまたはアーカイブ全体を抽出したりすることができます。従来の AES 暗号化アルゴリズムまたは最新の AES 暗号化アルゴリズムを使用して、各エントリを個別に暗号化および復号化できます。 Aspose.ZIP は、自己解凍型のマルチボリューム ZIP アーカイブを作成できます。
ZIP ファイル - 内部構造
前述のとおり、目次である中央ディレクトリは、ZIP アーカイブの終わりの方にあります。このディレクトリはインデックスとして機能し、アーカイブ内のすべてのファイル エントリをアーカイブ内の位置とともにリストします。エントリ ヘッダーには、作成時間と変更時間、ファイル システム属性、ファイル名、コメントを含めることができます。エントリ ヘッダーをカスタムの追加フィールドで拡張して、カスタム メタデータを保存できます。 Zip64 ヘッダーを含めて、アーカイブごとに 65,535 を超えるエントリをサポートすることができます。 Zip64 拡張子を持つ ZIP アーカイブの最大サイズは 264−1 バイトです。 ZIP アーカイブは複数のファイルに分割できます。このような場合、特定のエントリにすばやくアクセスできるように、中央ディレクトリに各ボリュームのオフセットが保存されます。
Zip アーカイブの人気とサポート
ZIP はナンバーワンのアーカイブ形式です。 ZIP アーカイブは広く認識されサポートされているため、Windows Explorer、macOS Finder などの一般的なファイル マネージャー、 7-Zip や WinRAR などのオープンソース ツールを含むさまざまなソフトウェア アプリケーションがネイティブ サポートを提供しています。 ZIP ファイルの作成と解凍。このサポートは、クラウド ストレージ サービス、電子メール クライアント、さらにはモバイル デバイスにまで拡張されます。
ZIP ファイルの使用例
ZIP アーカイブは、データを圧縮して整理するための普遍的なファイル形式であり、さまざまなソフトウェア アプリケーションで不可欠なものとなっています。 .NET を介したアーカイブの操作により、開発者は Zip ファイルを簡単に操作できるようになります。次のコード例では、Zip アーカイブの操作機能を詳しく説明し、 新しい Zip を作成 アーカイブからファイルを効率的に抽出する方法を示します。既存のもの。これらの例は、このライブラリの機能を利用して、.NET プロジェクトで Zip アーカイブをシームレスに管理するのに役立ちます。
Create Zip file via .NET
Compose ZIP archive with two entries added by their paths.:
using (var archive = new Archive())
{
archive.CreateEntry("entry_name1.dat", "input_file1.dat");
archive.CreateEntry("entry_name2.dat", "input_file2.dat");
archive.Save("result_archive.zip");
}
How to UnZIP files in C#
Steps: Unzip File to Folder in C#
- Create an instance of Archive class based on your zip file.
- Unzip the zip file using Archive.ExtractToDirectory method to your folder.
using (var archive = new Archive("input_archive.zip"))
{
archive.ExtractToDirectory("outputDirectory");
}
Compressing Single File ZIP File
Steps: Compressing Single File in C#
- Create a file stream with the desired name of your output zip file.
- Create file stream of the data file to be compressed and encrypted.
- Create an instance of Archive class and pass to it an instance of ArchiveEntrySettings class with AesEcryptionSettings instance, specifying the password.
- Add data file created in step 2 using Archive.CreateEntry method.
- Compress and encrypt the data file using Archive.Save method and pass it the file stream created in step 1.
using (var zipFile = File.Open("EncrypedWithAES256.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
}
Deleting entries from existing archive
You do not have to repack whole archive when you only need to remove one entry from it. Steps:
- Create a file stream with the desired name of your output zip file.
- Create an instance of Archive class based on your zip file.
- Delete the first file - the entry with zero index – from the archive.
- Save the archive without excluded entry to output stream from step 1
using (FileStream outputZipFile = File.Open(“withoutAnEntry.zip”, FileMode.Create))
{
using (Archive archive = new Archive(“archive.zip”))
{
archive.DeleteEntry(archive.Entries[0]);
archive.Save(outputZipFile);
}
}
Zip アーカイブに関する追加情報
人々は尋ねてきました
1. どの暗号化方式を選択すればよいですか?
ZIP 形式は、従来の (ZipCrypto) および最新の AES 暗号化技術をサポートしています。前者は後者よりもはるかに弱く、簡単に壊れます。 ZipCrypto は、レガシーの Aspose.ZIP によってサポートされています。アーカイブを作成するときは、AES256 暗号化のみを使用してください。
2. 圧縮にマルチコア プロセッサを利用する方法はありますか?
Aspose.ZIP を使用すると、さまざまな CPU コアごとに ZIP アーカイブのエントリを作成できます。これにより、合計の圧縮時間を大幅に短縮できます。説明と使用例については、 記事 を参照してください。
3. zip にウイルスが感染することはありますか?
はい、ファイル自体が感染している場合、Zip アーカイブ内のファイルがウイルスに感染する可能性があります。 Zip 形式自体は本質的に有害ではありませんが、他のファイル形式と同様に、感染したファイルを保存したり転送したりする可能性があります。