檔案壓縮和解壓縮
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。
在本節中
主題 | 描述 |
---|---|
壓縮屬性 |
在 NTFS 檔案系統磁碟區上,每個檔案和目錄都有 壓縮屬性。 |
壓縮狀態 |
支援個別檔案與目錄壓縮的磁碟區上的每個檔案與目錄都有 壓縮狀態。 |
取得壓縮檔的大小 |
若要取得檔案的壓縮大小,請使用 GetCompressedFileSize 函式。 |
解壓縮單一檔案 |
應用程式可以使用 LZOpenFile、LZCopy 和 LZClose 函式來解壓縮單一壓縮檔案。 |
解壓縮多個檔案 |
應用程式可以使用 LZOpenFile、LZCopy 和 LZClose 函式來解壓縮多個檔案。 |
從壓縮檔讀取 |
應用程式可以使用 LZSeek 和 LZRead 函式一次解壓縮壓縮檔案。 |