共用方式為


檔案壓縮和解壓縮

NTFS 檔案系統磁片區支援個別檔案的檔案壓縮。 NTFS 檔案系統所使用的檔案壓縮演算法Lempel-Ziv壓縮。 這是 無遺失 的壓縮演算法,這表示壓縮和解壓縮檔案時不會遺失任何資料,而不是 JPEG 之類的 遺失 壓縮演算法,其中某些資料會在每次資料壓縮和解壓縮時遺失。

資料壓縮可藉由將備援資料最小化,以減少檔案的大小。 在文字檔中,重復資料可能會經常發生,例如空白字元或一般音調,例如字母 e 和 a;它也可以經常發生字元字串。 資料壓縮會藉由將此備援資料最小化,以建立壓縮版本的檔案。

每種資料壓縮演算法類型都會以唯一的方式將備援資料最小化。 例如, Huffman 編碼演算法 會根據這些字元發生的頻率,將程式碼指派給檔案中的字元。 另一個稱為 「執行長度編碼」的壓縮演算法會產生重複字元的兩部分值:第一個部分會指定重複字元的次數,而第二個部分會識別字元。 另一個稱為 Lempel-Ziv 演算法的壓縮演算法會將可變長度字串轉換成固定長度的程式碼,其耗用的空間小於原始字串。

NTFS 檔案系統檔案壓縮

在 NTFS 檔案系統上,會以透明方式執行壓縮。 這表示它可以使用,而不需要變更現有的應用程式。 應用程式無法存取檔案的壓縮位元組;他們只會看到未壓縮的資料。 因此,開啟壓縮檔的應用程式可以在它上運作,就像它未壓縮一樣。 不過,這些檔案無法複製到另一個檔案系統。

如果您壓縮大於 30 GB 的檔案,壓縮可能不會成功。

下列主題會識別 NTFS 檔案系統檔案壓縮:

檔案壓縮和解壓縮程式庫

檔案壓縮和解壓縮程式庫會採用現有的檔案或檔案,並產生壓縮版本的檔案或檔案。 壓縮也是無損失的,但對應用程式而言,壓縮並不透明。 應用程式只能透過檔案壓縮程式庫的協助,在這類檔案上運作。 此外,您可以在這類檔案上執行的唯一作業是從原始檔案建立壓縮檔,並從解壓縮的版本復原原始資料。 通常不支援編輯,如果完全支援搜尋,則搜尋會受到限制。

一般而言,應用程式會呼叫 Lz32.dll 中的函式,以解壓縮使用 Compress.exe 壓縮的資料。 函式也可以處理檔案,而不嘗試解壓縮它們。

您可以使用 Lz32.dll 中的函式來解壓縮單一或多個檔案。 您也可以使用它們一次解壓縮壓縮檔案。

下列主題會識別 Lz32.dll 中函式所提供的檔案解壓縮:

封包是由支援磁片跨越和多檔案壓縮等功能的壓縮程式庫所建立。 如需詳細資訊,請參閱封包軟體發展工具組: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp

本節內容

主題 描述
Compression 屬性
在 NTFS 檔案系統磁片區上,每個檔案和目錄都有 壓縮屬性
壓縮狀態
磁片區上支援壓縮個別檔案和目錄的每個檔案和目錄都有 壓縮狀態
取得壓縮檔案的大小
若要取得檔案的壓縮大小,請使用 GetCompressedFileSize 函式。
解壓縮單一檔案
應用程式可以使用 LZOpenFile、LZCopy 和 LZClose 函式來解壓縮單一壓縮檔案。
解壓縮多個檔案
應用程式可以使用 LZOpenFile、LZCopy 和 LZClose 函式來解壓縮多個檔案。
從壓縮檔讀取
應用程式可以使用 LZSeek 和 LZRead 函式,一次解壓縮一部分壓縮檔案。