Sdílet prostřednictvím


Komprese a dekomprese souborů

Svazky systému souborů NTFS podporují kompresi souborů na jednotlivých souborech. Algoritmus komprese souborů používaný systémem souborů NTFS je Lempel-Ziv kompresi. Jedná se o bezeztrátový algoritmus komprese, což znamená, že při komprimaci a dekomprimaci souboru nedojde ke ztrátě algoritmů komprese, jako je JPEG, kde se některá data ztratí při každé kompresi a dekompresi dat.

Komprese dat zmenšuje velikost souboru minimalizací redundantních dat. V textovém souboru můžou redundantní data často nabývat znaků, jako je znak mezery nebo běžná samohláska, například písmena e a a; může se také často vyskytovat řetězce znaků. Komprese dat vytvoří komprimovanou verzi souboru minimalizací těchto redundantních dat.

Každý typ algoritmu komprese dat minimalizuje redundantní data jedinečným způsobem. Například algoritmus kódování Huffman přiřadí kód znakům v souboru na základě toho, jak často k těmto znakům dochází. Jiný algoritmus komprese, který se nazývá kódování délky spuštění, generuje hodnotu dvoudílné pro opakované znaky: první část určuje, kolikrát se znak opakuje, a druhá část identifikuje znak. Jiný algoritmus komprese, označovaný jako algoritmus Lempel-Ziv, převádí řetězce s proměnnou délkou na kódy s pevnou délkou, které spotřebovávají méně místa než původní řetězce.

Komprese souborů systému souborů NTFS

V systému souborů NTFS se komprese provádí transparentně. To znamená, že se dá použít bez nutnosti změn stávajících aplikací. Komprimované bajty souboru nejsou přístupné aplikacím; vidí jenom nekomprimovaná data. Aplikace, které otevřou komprimovaný soubor, s ním mohou pracovat, jako by nebyly komprimované. Tyto soubory však nelze zkopírovat do jiného systému souborů.

Pokud komprimujete soubor, který je větší než 30 gigabajtů, komprese nemusí být úspěšná.

Následující témata identifikují kompresi souborů systému souborů NTFS:

Komprese souborů a dekomprese knihoven

Komprese a dekomprese knihoven souborů přebírají existující soubor nebo soubory a vytvoří soubor nebo soubory, které jsou komprimované verze originálů. Komprese je také bezeztrátová, ale komprese není pro aplikace transparentní. Aplikace může pracovat pouze s těmito soubory s pomocí knihovny komprese souborů. Kromě toho jediné operace, které můžete s těmito soubory provádět, vytváří komprimovaný soubor z původního souboru a obnovuje původní data z dekompresované verze. Úpravy se obvykle nepodporují a hledání je omezené, pokud je vůbec podporováno.

Aplikace obvykle volá funkce v Lz32.dll k dekomprimaci dat komprimovaných pomocí Compress.exe. Funkce mohou také zpracovávat soubory, aniž by se je pokusily dekomprimovat.

Funkce v Lz32.dll můžete použít k dekomprimování jednoho nebo více souborů. Můžete je také použít k dekomprimaci komprimovaných souborů najednou.

Následující témata identifikují dekompresi souboru poskytované funkcemi v Lz32.dll:

Kabinety

Komprimační knihovna vytváří komprimační knihovnu, která podporuje funkce, jako je například přeskakování disků a komprese více souborů. Další informace naleznete v souboru Cab Software Development Kit: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

V této části

Námět Popis
atributu komprese
Na svazku systému souborů NTFS má každý soubor a adresář atribut komprese.
stavu komprese
Každý soubor a adresář na svazku, který podporuje kompresi jednotlivých souborů a adresářů, má stav komprese.
získání velikosti komprimovaného souboru
K získání komprimované velikosti souboru použijte funkci GetCompressedFileSize.
dekomprese jednoho souboru
Aplikace může dekomprimovat jeden komprimovaný soubor pomocí funkcí LZOpenFile, LZCopy a LZClose.
dekomprese více souborů
Aplikace může dekomprimovat více souborů pomocí funkcí LZOpenFile, LZCopy a LZClose.
čtení z komprimovaných souborů
Aplikace může dekomprimovat komprimovaný soubor najednou pomocí funkcí LZSeek a LZRead.