Delen via


Bestandscompressie en -decompressie

De NTFS-bestandssysteemvolumes ondersteunen bestandscompressie op basis van een afzonderlijk bestand. Het algoritme voor bestandscompressie dat door het NTFS-bestandssysteem wordt gebruikt, is Lempel-Ziv compressie. Dit is een verliesloos compressie-algoritme, wat betekent dat er geen gegevens verloren gaan bij het comprimeren en decomprimeren van het bestand, in tegenstelling tot lossy compressiealgoritmen zoals JPEG, waarbij sommige gegevens verloren gaan telkens wanneer gegevenscompressie en decomprimatie optreden.

Gegevenscompressie vermindert de grootte van een bestand door redundante gegevens te minimaliseren. In een tekstbestand kunnen redundante gegevens vaak voorkomen als tekens, zoals het spatieteken of gewone klinkers, zoals de letters e en a; het kan ook vaak optredende tekenreeksen. Gegevenscompressie maakt een gecomprimeerde versie van een bestand door deze redundante gegevens te minimaliseren.

Elk type algoritme voor gegevenscompressie minimaliseert redundante gegevens op een unieke manier. Het Huffman-coderingsalgoritmen bijvoorbeeld een code toewijst aan tekens in een bestand op basis van hoe vaak deze tekens voorkomen. Een ander compressie-algoritme, coderen van de uitvoeringslengtegenoemd, genereert een tweedelige waarde voor herhaalde tekens: het eerste deel geeft het aantal keren aan dat het teken wordt herhaald en het tweede deel identificeert het teken. Een ander compressie-algoritme, ook wel het Lempel-Ziv algoritmegenoemd, converteert tekenreeksen met een variabele lengte naar codes met vaste lengte die minder ruimte verbruiken dan de oorspronkelijke tekenreeksen.

De compressie van het NTFS-bestandssysteembestand

Op het NTFS-bestandssysteem wordt compressie transparant uitgevoerd. Dit betekent dat het kan worden gebruikt zonder dat er wijzigingen in bestaande toepassingen nodig zijn. De gecomprimeerde bytes van het bestand zijn niet toegankelijk voor toepassingen; ze zien alleen de niet-gecomprimeerde gegevens. Daarom kunnen toepassingen die een gecomprimeerd bestand openen, erop werken alsof het niet is gecomprimeerd. Deze bestanden kunnen echter niet worden gekopieerd naar een ander bestandssysteem.

Als u een bestand comprimeert dat groter is dan 30 gigabyte, lukt de compressie mogelijk niet.

In de volgende onderwerpen wordt de compressie van het NTFS-bestandssysteembestand geïdentificeerd:

Bestandscompressie- en decompressiebibliotheken

De bestandscompressie- en decompressiebibliotheken nemen een bestaand bestand of bestaande bestanden en produceren een bestand of bestanden die gecomprimeerde versies van de originelen zijn. De compressie is ook verliesloos, maar de compressie is niet transparant voor toepassingen. Een toepassing kan alleen op dergelijke bestanden werken met behulp van een bestandscompressiebibliotheek. Bovendien maken de enige bewerkingen die u op dergelijke bestanden kunt uitvoeren een gecomprimeerd bestand van een origineel en het herstellen van de oorspronkelijke gegevens uit de gedecomprimeerde versie. Bewerken wordt doorgaans niet ondersteund en zoeken is beperkt als dit helemaal wordt ondersteund.

Normaal gesproken roept een toepassing functies in Lz32.dll aan om gegevens die zijn gecomprimeerd met behulp van Compress.exete decomprimeren. De functies kunnen bestanden ook verwerken zonder ze te decomprimeren.

U kunt de functies in Lz32.dll gebruiken om één of meerdere bestanden te decomprimeren. U kunt ze ook gebruiken om gecomprimeerde bestanden een deel tegelijk te decomprimeren.

De volgende onderwerpen identificeren de bestandsdecomprimatie die wordt geleverd door de functies in Lz32.dll:

Kabinetten

Cabinets worden gemaakt door een compressiebibliotheek die ondersteuning biedt voor functies zoals schijfspanning en multi-file-compressie. Zie de Cabinet Software Development Kit: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.aspvoor meer informatie.

In deze sectie

Onderwerp Beschrijving
Compressiekenmerk
Op een NTFS-bestandssysteemvolume heeft elk bestand en elke map een compressiekenmerk.
Compressiestatus
Elk bestand en elke map op een volume dat compressie voor afzonderlijke bestanden en mappen ondersteunt, heeft een compressiestatus.
het verkrijgen van de grootte van een gecomprimeerd bestand
Gebruik de functie GetCompressedFileSize om de gecomprimeerde grootte van een bestand te verkrijgen.
het decomprimeren van één bestand
Een toepassing kan één gecomprimeerd bestand decomprimeren met behulp van de functies LZOpenFile, LZCopy en LZClose.
meerdere bestanden decomprimeren
Een toepassing kan meerdere bestanden decomprimeren met behulp van de functies LZOpenFile, LZCopy en LZClose.
lezen uit gecomprimeerde bestanden
Een toepassing kan een gecomprimeerd bestand een deel tegelijk decomprimeren met behulp van de functies LZSeek en LZRead.