Z 檔案格式

Z 檔案格式是一種傳統壓縮格式,在 20 世紀 80 年代和 90 年代廣泛用於 UNIX 系統。它使用 Lempel-Ziv-Welch (LZW) 演算法來壓縮文件,顯著減小文件大小,同時保持資料完整性。儘管 Z 檔案在很大程度上被 gzip 和 bzip2 等更現代的格式所取代,但在遺留系統和檔案中仍然會遇到 Z 檔案。

一般 Z 檔案資訊

Z 檔案 是一種傳統檔案壓縮格式,主要用於 UNIX 和早期 Linux 系統。他們採用 Lempel-Ziv-Welch (LZW) 演算法,該演算法在推出時是一種突破性的資料壓縮方法。 Z 格式旨在透過有效編碼重複資料模式來減少檔案大小,使其在儲存容量有限的時代有助於節省磁碟空間和頻寬。 Z 歸檔通常會壓縮單一檔案而不是整個目錄,儘管它們可以與 tar 等工具結合使用來一次歸檔和壓縮多個檔案。雖然 Z 格式已在很大程度上被更現代的壓縮方法所取代,但它仍然是計算歷史的重要組成部分,並且在一些較舊的軟體檔案和基於 UNIX 的系統中仍然會遇到。

Z 檔案歷史資訊

  • 1980 年代:Z 格式是在 UNIX 早期開發的,作為一種有效壓縮檔案和節省儲存空間的方法,這在當時是寶貴的資源。
  • 1983 年:建立 Z 檔案的壓縮實用程式作為 UNIX 作業系統的一部分引入。它很快就成為 UNIX 環境中檔案壓縮的標準工具。
  • 20 世紀 80 年代末:隨著 UNIX 系統變得更加普遍,Z 格式在軟體分發中得到了廣泛的應用,特別是透過網路發送和儲存大型檔案。
  • 20 世紀 90 年代:gzip 和 bzip2 等更先進的壓縮格式的引入開始取代 Z 格式,因為它們具有更高的壓縮比和附加功能。
  • 2000 年代:雖然 Z 格式不再受大多數現代應用程式的青睞,但它繼續在 UNIX 和 Linux 系統中受到支持,以向後相容於舊軟體。
  • 存在:雖然大部分已經過時,但在遺留系統和一些需要與舊 UNIX 工具相容的特定用例中仍然會遇到 Z 格式。

Z檔案的結構

與更現代的壓縮格式相比,Z 存檔格式相對簡單。它是為單一檔案壓縮而設計的,缺乏較新格式中的一些高級功能。以下是 Z 檔案結構的概述:

  • 標頭: Z 存檔的標頭包含基本元數據,包括將檔案標識為 Z 存檔的幻數 (0x1f9d)。它還可能包括一些指示壓縮參數的控制標誌,儘管這些與現代格式相比是最小的。
  • 壓縮資料流: Z存檔的主要組成部分是壓縮資料流,檔案資料經過LZW(Lempel-Ziv-Welch)壓縮演算法處理後儲存在其中。資料被壓縮在單一連續流中,這意味著需要解壓縮整個檔案才能存取資料的任何部分。
  • 文件結束 (EOF) 標籤: Z 格式不像其他格式有正式的頁尾。相反,壓縮資料流的結束標誌著存檔的結束。基本 Z 格式沒有內建校驗和或完整性驗證功能。

Z 壓縮方法

Z 格式僅依賴 LZW (Lempel-Ziv-Welch) 演算法進行壓縮。這種方法在當時是創新的,並以其簡單性和效率的平衡而聞名。以下詳細介紹一下 Z 檔案中所使用的壓縮方法:

  1. LZW 壓縮: LZW 演算法是一種基於字典的壓縮技術,它用較短的程式碼取代重複的資料序列,從而減少整體檔案大小。它是一種無損壓縮方法,這意味著可以從壓縮檔案完美地重建原始資料。 LZW 由於其相對較快的壓縮和解壓縮速度而在檔案壓縮的早期變得流行。
  2. 無附加過濾器或方法: 與可能支援各種過濾器和附加壓縮方法的現代壓縮格式不同,Z 格式僅使用 LZW,沒有可選過濾器或增強功能。這種簡單性既是一種優勢,也是一種限制,因為它使該格式易於實現,但與較新的格式相比,靈活性和效率較低。
  3. 無完整性檢查: Z 格式不包含用於驗證資料完整性的內建校驗和機制(如 CRC32 或 SHA-256)。因此,檢測 Z 存檔中的損壞更具挑戰性,而是依賴外部方法或解壓縮過程的行為。

.Z 副檔名支援的操作

Aspose.ZIP 為使用 Z 檔案提供全面支持,常用於類 Unix 作業系統。此功能簡化了應用程式中壓縮檔案的管理和操作。以下是 Aspose.ZIP 如何為您提供協助:

  • 擷取 Z 檔案: 輕鬆從 .z 檔案中擷取所有內容。 Aspose.ZIP 確保在提取過程中保持資料的完整性和原始結構。
  • 精確選擇性擷取: 針對 .z 檔案中的特定檔案進行擷取。這使您可以根據文件名或其他標準選擇性地恢復數據,從而優化您的工作流程並節省時間。
  • **簡化壓縮:**直接在應用程式內從檔案和目錄建立 Z 存檔。 Aspose.ZIP利用高效率的LZMA2壓縮方法大幅減少檔案大小,節省寶貴的儲存空間。利用此功能進行資料歸檔、備份或高效率的檔案傳輸。
  • 自訂選項: 透過調整壓縮等級和其他參數來微調您的壓縮過程。 Aspose.ZIP 可讓您在壓縮速度和產生的檔案大小之間取得平衡。您可以自訂流程以優化更快的壓縮或根據特定需求實現最大壓縮。

Z 檔案存檔的架構

.Z 檔案格式是一種傳統的壓縮方法,其結構是使用 LZW 演算法提供基本、高效的壓縮。雖然 Z 檔案結構比 formats .xz 等現代檔案結構簡單,但對於理解早期 UNIX 系統中資料的處理方式仍然至關重要。以下是 .Z 存檔結構的概述:

  1. 文件頭:

    • Magic Bytes:檔案以幻數 (0x1f9d) 開頭,將其標識為 .Z 壓縮檔案。這對於解壓縮時識別檔案類型至關重要。
    • 標誌:標頭可能包括決定如何執行壓縮的基本標誌。這些標誌可能指示是否使用某些選用功能,例如使用可變長度代碼。
  2. 壓縮資料流:

    • LZW 壓縮資料:.Z 檔案的主體包含使用 LZW (Lempel-Ziv-Welch) 演算法壓縮的實際檔案資料。資料儲存為單一連續的壓縮訊息流,透過使用較短的代碼對重複資料模式進行編碼來減少冗餘。
    • 無區塊或分段:與將資料劃分為區塊或段以進行獨立壓縮和更容易錯誤復原的更複雜格式不同,Z 格式一次壓縮整個檔案。這種簡單性對於當時有限的計算資源來說是有利的,但如果檔案損壞則可能是缺點。
  3. 文件結束 (EOF) 標記:

    • 隱含終止:Z 格式沒有明確的文件結束標記或頁尾。壓縮資料流只是運行直到到達文件末尾。解壓縮過程將持續進行,直到提取所有資料或遇到錯誤。
    • 無內建完整性檢查:與現代壓縮格式不同,.Z 檔案在檔案結構中不包含校驗和或其他資料完整性驗證機制。缺乏內建錯誤檢測意味著只有在輸出資料不完整或不正確的情況下,才可能在解壓縮期間注意到損壞。
  4. 可選元資料:

    • 最小元數據:Z 檔案格式非常基本,不支援壓縮檔案中的附加元數據,例如檔案名稱、時間戳記或擴充屬性。任何此類資訊都需要在外部處理,通常由檔案系統或隨附文件處理。

Z 檔案存檔的架構

Z Archive 格式的流行

.Z 檔案格式在 UNIX 和早期 Linux 系統的早期非常流行,主要是在 20 世紀 80 年代和 20 世紀 90 年代。由於其相對有效地利用儲存空間和快速解壓縮時間,它成為這些平台上壓縮檔案的標準。此格式通常用於分發軟體、系統更新和大型資料文件,特別是在儲存容量有限的環境中。儘管 Z 格式已在很大程度上被 gzip 和 bzip2 等更現代的壓縮格式所取代,但它仍然支援許多 UNIX 和 Linux 系統上的舊版相容性。儘管 Z 格式的普遍使用率有所下降,但在某些檔案環境和較舊的軟體儲存庫中仍然會遇到 Z 格式,在計算歷史中保持著一個小眾但重要的角色。

使用 Z 檔案的範例

本節提供程式碼範例,示範如何使用 C# 和 Java 壓縮和解壓縮 Z 檔案。以下是利用 ZArchive 類別處理 Z 檔案的範例,說明如何在 C# 和 Java 環境中以程式方式管理它們。

Сompress the Z file into .Z extension via C# using ZArchive instance.

    using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
    {
        using (ZArchive archive = new ZArchive())
        {
            archive.SetSource(source);
            archive.Save("alice29.txt.Z");
        }
    }

Open Z Archive via C#

    FileInfo fi = new FileInfo("data.bin.Z");

    using (ZArchive archive = new ZArchive(fi.OpenRead()))
    {
        archive.Extract("data.bin");
    }

Сompress the Z file into .Z extension via Java using ZArchive instance.

    try (FileInputStream source = new FileInputStream("alice29.txt")) {
        try (ZArchive archive = new ZArchive()) {
            archive.setSource(source);
            archive.save("alice29.txt.Z");
        }
    } catch (IOException ex) {
    }

Open Z Archive via Java

    try (ZArchive archive = new ZArchive("data.bin.Z")) {
        archive.extract("data.bin");
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

附加資訊

人們一直在問

1. 什麼是 Z 文件,它與 ZIP 或 GZIP 等其他壓縮文件格式有何不同?

Z 檔案是使用 Lempel-Ziv-Welch (LZW) 演算法建立的壓縮存檔,該演算法常用於 UNIX 系統。與更現代並提供更好的壓縮比和附加功能的 ZIP 或 GZIP 不同,Z 格式是更簡單,並且在計算的早期很流行。 Z 檔案通常出現在較舊的軟體發行版或遺留系統中。

2. Z 檔案現在仍然常用嗎?

Z 檔案如今並不常用,因為它們很大程度上已被更高效的壓縮格式(如 GZIP、BZIP2 和 XZ)所取代。但是,許多 UNIX 和 Linux 系統仍然支援 Z 檔案以實現舊版相容性,並且在較舊的軟體檔案中仍然可能會遇到它們。

3. 我可以將 Z 檔案轉換為其他格式(例如 ZIP 或 GZIP)嗎?

是的,可以將 Z 檔案即時轉換為另一種格式。您可以將 Z 存檔中的特定條目直接提取到記憶體中,而無需建立中間檔案。這允許與 gzip 或 zip 等其他壓縮格式無縫整合。