Dateikomprimierung und -dekomprimierung

Die NTFS-Dateisystemvolumes unterstützen die Dateikomprimierung auf individueller Dateibasis. Der vom NTFS-Dateisystem verwendete Dateikomprimierungsalgorithmus ist Lempel-Ziv Komprimierung. Dies ist ein verlustfreier Komprimierungsalgorithmus, was bedeutet, dass beim Komprimieren und Dekomprimieren der Datei keine Daten verloren gehen, im Gegensatz zu verlustbehafteten Komprimierungsalgorithmen wie JPEG, bei denen bei jeder Datenkomprimierung und -dekomprimierung einige Daten verloren gehen.

Die Datenkomprimierung reduziert die Größe einer Datei, indem redundante Daten minimiert werden. In einer Textdatei können redundante Daten häufig vorkommende Zeichen sein, z. B. das Leerzeichen oder gängige Vokale wie die Buchstaben e und a; Es können auch häufig vorkommende Zeichenfolgen sein. Die Datenkomprimierung erstellt eine komprimierte Version einer Datei, indem diese redundanten Daten minimiert werden.

Jeder Typ von Datenkomprimierungsalgorithmus minimiert redundante Daten auf eindeutige Weise. Der Huffman-Codierungsalgorithmus weist z. B. Zeichen in einer Datei basierend darauf, wie häufig diese Zeichen auftreten, einen Code zu. Ein anderer Komprimierungsalgorithmus, der als Laufzeitcodierung bezeichnet wird, generiert einen zweiteiligen Wert für wiederholte Zeichen: Der erste Teil gibt an, wie oft das Zeichen wiederholt wird, und der zweite Teil identifiziert das Zeichen. Ein anderer Komprimierungsalgorithmus, der als Lempel-Ziv-Algorithmus bekannt ist, konvertiert Zeichenfolgen mit variabler Länge in Codes mit fester Länge, die weniger Platz als die ursprünglichen Zeichenfolgen beanspruchen.

Die NTFS-Dateisystemdateikomprimierung

Im NTFS-Dateisystem erfolgt die Komprimierung transparent. Dies bedeutet, dass es ohne Änderungen an vorhandenen Anwendungen verwendet werden kann. Auf die komprimierten Bytes der Datei kann nicht zugegriffen werden. sie sehen nur die nicht komprimierten Daten. Daher können Anwendungen, die eine komprimierte Datei öffnen, mit ihr so arbeiten, als wäre sie nicht komprimiert. Diese Dateien können jedoch nicht in ein anderes Dateisystem kopiert werden.

Wenn Sie eine Datei komprimieren, die größer als 30 Gigabyte ist, kann die Komprimierung nicht erfolgreich sein.

In den folgenden Themen wird die Dateisystemkomprimierung des NTFS-Dateisystems beschrieben:

Dateikomprimierungs- und Dekomprimierungsbibliotheken

Die Dateikomprimierungs- und Dekomprimierungsbibliotheken verwenden eine vorhandene Datei oder Dateien und erzeugen eine Datei oder Dateien, bei denen es sich um komprimierte Versionen der Originale handelt. Die Komprimierung ist auch verlustfrei, aber die Komprimierung ist für Anwendungen nicht transparent. Eine Anwendung kann mit solchen Dateien nur mit Hilfe einer Dateikomprimierungsbibliothek arbeiten. Darüber hinaus sind die einzigen Vorgänge, die Sie für solche Dateien ausführen können, das Erstellen einer komprimierten Datei aus einem Original und das Wiederherstellen der ursprünglichen Daten aus der dekomprimierten Version. Die Bearbeitung wird in der Regel nicht unterstützt, und die Suche ist begrenzt, wenn sie überhaupt unterstützt wird.

In der Regel ruft eine Anwendung Funktionen in Lz32.dll auf, um Daten zu dekomprimieren, die mithilfe von Compress.exe komprimiert wurden. Die Funktionen können auch Dateien verarbeiten, ohne sie zu dekomprimieren.

Sie können die Funktionen in Lz32.dll verwenden, um einzelne oder mehrere Dateien zu dekomprimieren. Sie können sie auch verwenden, um komprimierte Dateien nacheinander zu dekomprimieren.

In den folgenden Themen wird die Dateikomprimierung beschrieben, die von den Funktionen in Lz32.dll bereitgestellt wird:

Schränke

Cabinets werden von einer Komprimierungsbibliothek erstellt, die Features wie Datenträgerspannen und Komprimierung mit mehreren Dateien unterstützt. Weitere Informationen finden Sie im Cabinet Software Development Kit: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

In diesem Abschnitt

Thema Beschreibung
Komprimierungsattribut
Auf einem NTFS-Dateisystemvolume verfügt jede Datei und jedes Verzeichnis über ein Komprimierungsattribut.
Komprimierungszustand
Jede Datei und jedes Verzeichnis auf einem Volume, das die Komprimierung für einzelne Dateien und Verzeichnisse unterstützt, weist einen Komprimierungsstatus auf.
Abrufen der Größe einer komprimierten Datei
Verwenden Sie die GetCompressedFileSize-Funktion, um die komprimierte Größe einer Datei abzurufen.
Dekomprimieren einer einzelnen Datei
Eine Anwendung kann eine einzelne komprimierte Datei mithilfe der Funktionen LZOpenFile, LZCopy und LZClose dekomprimieren.
Dekomprimieren mehrerer Dateien
Eine Anwendung kann mehrere Dateien mithilfe der Funktionen LZOpenFile, LZCopy und LZClose dekomprimieren.
Lesen aus komprimierten Dateien
Eine Anwendung kann eine komprimierte Datei mit den Funktionen LZSeek und LZRead gleichzeitig dekomprimieren.