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 はナンバーワンのアーカイブ形式です。 ZIP アーカイブは非常に広く認識され、サポートされているため、Windows Explorer、macOS Finder などの一般的なファイル マネージャー、[7-Zip](/zip/most-common-archives/what-is-7zip などのオープンソース ツールなど) を含むさまざまなソフトウェア アプリケーションがサポートされています。 ) および 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 アーカイブを圧縮する最も一般的な理由は何ですか?

Zip を圧縮する アーカイブの最も一般的な理由は、データの保存、送信、編成を効率的に行うためにファイル サイズを削減することです。

2. なぜzipはアーカイブと呼ばれるのでしょうか?

Zip がアーカイブと呼ばれるのは、物理的なアーカイブがドキュメントを保存および整理する方法と同様に、さまざまなファイルやディレクトリを 1 つの圧縮されたエンティティにバンドルするデジタル バインダーとして機能するためです。このアーカイブ機能により、個々のファイルの数と必要な全体的なストレージ スペースが削減されるため、データのストレージと転送が簡素化されます。

3. zip にウイルスが感染することはありますか?

はい、ファイル自体が感染している場合、Zip アーカイブ内のファイルがウイルスに感染する可能性があります。 Zip 形式自体は本質的に有害ではありませんが、他のファイル形式と同様に、感染したファイルを保存したり転送したりする可能性があります。