Udostępnij za pośrednictwem


Kompresja i dekompresja plików

Woluminy systemu plików NTFS obsługują kompresję plików dla poszczególnych plików. Algorytm kompresji plików używany przez system plików NTFS jest Lempel-Ziv kompresji. Jest to bezstratny algorytm kompresji, co oznacza, że żadne dane nie są tracone podczas kompresowania i dekompresowania pliku, w przeciwieństwie do straty algorytmów kompresji, takich jak JPEG, gdzie niektóre dane są tracone za każdym razem, gdy występuje kompresja i dekompresja danych.

Kompresja danych zmniejsza rozmiar pliku, minimalizując nadmiarowe dane. W pliku tekstowym dane nadmiarowe mogą być często występującymi znakami, takimi jak znak spacji lub typowe śluby, takie jak litery e i a; może również często występować ciągi znaków. Kompresja danych tworzy skompresowaną wersję pliku, minimalizując te nadmiarowe dane.

Każdy typ algorytmu kompresji danych minimalizuje nadmiarowe dane w unikatowy sposób. Na przykład algorytm kodowania Huffman przypisuje kod do znaków w pliku na podstawie tego, jak często występują te znaki. Inny algorytm kompresji o nazwie kodowanie długości przebiegugeneruje dwuczęściową wartość dla powtarzających się znaków: pierwsza część określa liczbę powtórzeń znaku, a druga część identyfikuje znak. Inny algorytm kompresji, znany jako algorytm Lempel-Ziv, konwertuje ciągi o zmiennej długości na kody o stałej długości, które zużywają mniej miejsca niż oryginalne ciągi.

Kompresja pliku systemu plików NTFS

W systemie plików NTFS kompresja jest wykonywana w sposób niewidoczny. Oznacza to, że może być używany bez konieczności wprowadzania zmian w istniejących aplikacjach. Skompresowane bajty pliku nie są dostępne dla aplikacji; widzą tylko nieskompresowane dane. W związku z tym aplikacje, które otwierają skompresowany plik, mogą działać na nim tak, jakby nie zostały skompresowane. Nie można jednak skopiować tych plików do innego systemu plików.

W przypadku skompresowania pliku, który jest większy niż 30 gigabajtów, kompresja może zakończyć się niepowodzeniem.

Następujące tematy identyfikują kompresję plików systemu plików NTFS:

Kompresja i dekompresja plików

Kompresja plików i dekompresja biblioteki przyjmują istniejący plik lub pliki i tworzą plik lub pliki, które są skompresowane wersje oryginałów. Kompresja jest również bezstratna, ale kompresja nie jest niewidoczna dla aplikacji. Aplikacja może działać tylko na takich plikach z pomocą biblioteki kompresji plików. Ponadto jedynymi operacjami, które można wykonać na takich plikach, są tworzenie skompresowanego pliku z oryginalnego i odzyskanie oryginalnych danych z dekompresowanej wersji. Edytowanie jest zwykle nieobsługiwane, a wyszukiwanie jest ograniczone, jeśli jest obsługiwane w ogóle.

Zazwyczaj aplikacja wywołuje funkcje w Lz32.dll w celu dekompresowania danych skompresowanych przy użyciu Compress.exe. Funkcje mogą również przetwarzać pliki bez próby ich dekompresowania.

Za pomocą funkcji w Lz32.dll można dekompresować pojedynczy lub wiele plików. Można ich również użyć do dekompresowania skompresowanych plików w danym momencie.

Następujące tematy identyfikują dekompresję pliku, która jest dostarczana przez funkcje w Lz32.dll:

Szafy

Szafki są tworzone przez bibliotekę kompresji, która obsługuje funkcje, takie jak spanning dysku i kompresja wielu plików. Aby uzyskać dodatkowe informacje, zobacz Cabinet Software Development Kit: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

W tej sekcji

Temat Opis
atrybutu kompresji
Na woluminie systemu plików NTFS każdy plik i katalog ma atrybut kompresji .
stanu kompresji
Każdy plik i katalog na woluminie, który obsługuje kompresję poszczególnych plików i katalogów, ma stan kompresji.
uzyskiwanie rozmiaru skompresowanego pliku
Aby uzyskać skompresowany rozmiar pliku, użyj funkcji GetCompressedFileSize.
dekompresowanie pojedynczego pliku
Aplikacja może dekompresować pojedynczy skompresowany plik przy użyciu funkcji LZOpenFile, LZCopy i LZClose.
dekompresowanie wielu plików
Aplikacja może dekompresować wiele plików przy użyciu funkcji LZOpenFile, LZCopy i LZClose.
odczyt z skompresowanych plików
Aplikacja może dekompresować skompresowany plik w danym momencie przy użyciu funkcji LZSeek i LZRead.