Dela via


Filkomprimering och dekomprimering

NTFS-filsystemvolymerna stöder filkomprimering på individuell filbasis. Filkomprimeringsalgoritmen som används av NTFS-filsystemet är Lempel-Ziv komprimering. Det här är en förlustfri komprimeringsalgoritm, vilket innebär att inga data går förlorade när filen komprimeras och dekomprimeras, i stället för förlust komprimeringsalgoritmer som JPEG, där vissa data går förlorade varje gång datakomprimering och dekomprimering sker.

Datakomprimering minskar storleken på en fil genom att minimera redundanta data. I en textfil kan redundanta data förekomma ofta, till exempel blankstegstecken eller vanliga vokaler, till exempel bokstäverna e och a. Det kan också förekomma ofta teckensträngar. Datakomprimering skapar en komprimerad version av en fil genom att minimera dessa redundanta data.

Varje typ av datakomprimeringsalgoritm minimerar redundanta data på ett unikt sätt. Till exempel tilldelar Huffman-kodningsalgoritmen en kod till tecken i en fil baserat på hur ofta dessa tecken inträffar. En annan komprimeringsalgoritm, som kallas run-length-kodning, genererar ett tvådelade värde för upprepade tecken: den första delen anger hur många gånger tecknet upprepas och den andra delen identifierar tecknet. En annan komprimeringsalgoritm, som kallas Lempel-Ziv-algoritmen, konverterar strängar med variabel längd till koder med fast längd som förbrukar mindre utrymme än de ursprungliga strängarna.

NTFS-filsystemets filkomprimering

I NTFS-filsystemet utförs komprimering transparent. Det innebär att den kan användas utan att det krävs ändringar i befintliga program. De komprimerade byteen i filen är inte tillgängliga för program. de ser endast okomprimerade data. Därför kan program som öppnar en komprimerad fil fungera på den som om den inte komprimerades. Dessa filer kan dock inte kopieras till ett annat filsystem.

Om du komprimerar en fil som är större än 30 gigabyte kanske komprimeringen inte lyckas.

Följande avsnitt identifierar filkomprimering av NTFS-filsystem:

Bibliotek för filkomprimering och dekomprimering

Filkomprimerings- och dekomprimeringsbiblioteken tar en befintlig fil eller fil och skapar en fil eller filer som är komprimerade versioner av originalen. Komprimering är också förlustfri, men komprimering är inte transparent för program. Ett program kan bara köras på sådana filer med hjälp av ett filkomprimeringsbibliotek. Dessutom är de enda åtgärder som du kan utföra på sådana filer att skapa en komprimerad fil från ett original och återställa ursprungliga data från den dekomprimerade versionen. Redigering stöds vanligtvis inte och sökningen är begränsad om den stöds alls.

Vanligtvis anropar ett program funktioner i Lz32.dll för att dekomprimera data som komprimerades med hjälp av Compress.exe. Funktionerna kan också bearbeta filer utan att försöka dekomprimera dem.

Du kan använda funktionerna i Lz32.dll för att dekomprimera en eller flera filer. Du kan också använda dem för att dekomprimera komprimerade filer en del i taget.

Följande avsnitt identifierar fildekomprimering som tillhandahålls av funktionerna i Lz32.dll:

Skåp

Skåp skapas av ett komprimeringsbibliotek som stöder funktioner som diskintervall och komprimering av flera filer. Mer information finns i Cabinet Software Development Kit: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

I det här avsnittet

Ämne Beskrivning
komprimeringsattribut
På en NTFS-filsystemvolym har varje fil och katalog ett komprimeringsattribut.
komprimeringstillstånd
Varje fil och katalog på en volym som stöder komprimering för enskilda filer och kataloger har ett komprimeringstillstånd.
Hämta storleken på en komprimerad fil
Om du vill hämta den komprimerade storleken på en fil använder du funktionen GetCompressedFileSize.
expanderar en enda fil
Ett program kan expandera en enda komprimerad fil med hjälp av funktionerna LZOpenFile, LZCopy och LZClose.
expanderar flera filer
Ett program kan dekomprimera flera filer med hjälp av funktionerna LZOpenFile, LZCopy och LZClose.
läsning från komprimerade filer
Ett program kan expandera en komprimerad fil en del i taget med hjälp av funktionerna LZSeek och LZRead.