Сжатие файлов и декомпрессия
Тома файловой системы NTFS поддерживают сжатие файлов на отдельной основе. Алгоритм сжатия файлов, используемый файловой системой NTFS, Lempel-Ziv сжатие. Это алгоритм сжатия без потери, что означает, что данные не теряются при сжатие и декомпрессии файла, а не алгоритмы сжатия, такие как JPEG, где некоторые данные теряются при каждом сжатии и декомпрессии.
Сжатие данных уменьшает размер файла, минимизируя избыточные данные. В текстовом файле избыточные данные могут часто возникать символы, такие как символ пробела или общие гласные, такие как буквы e и a; Она также может быть часто встречающейся строкой символов. Сжатие данных создает сжатые версии файла, минимизируя эти избыточные данные.
Каждый тип алгоритма сжатия данных сводит к минимуму избыточные данные уникальным образом. Например, алгоритм кодирования Huffman назначает код символам в файле на основе частоты возникновения этих символов. Другой алгоритм сжатия, называемый кодированием длины выполнения, создает двухпартийное значение для повторяющихся символов: первая часть определяет количество повторений символа, а вторая часть определяет символ. Другой алгоритм сжатия, известный как алгоритм Lempel-Ziv алгоритма, преобразует строки переменной длины в коды фиксированной длины, которые используют меньше места, чем исходные строки.
Сжатие файлов файловой системы NTFS
В файловой системе NTFS сжатие выполняется прозрачно. Это означает, что его можно использовать без внесения изменений в существующие приложения. Сжатые байты файла недоступны для приложений; они видят только несжатые данные. Таким образом, приложения, открывающие сжатый файл, могут работать с ним, как если бы он не был сжатым. Однако эти файлы нельзя скопировать в другую файловую систему.
Если сжать файл размером более 30 гигабайт, сжатие может завершиться ошибкой.
В следующих разделах описано сжатие файловой системы NTFS:
Библиотеки сжатия файлов и распаковки
Библиотеки сжатия и распаковки файлов принимают существующий файл или файлы и создают файлы или файлы, сжатые версии исходных файлов. Сжатие также без потери, но сжатие не является прозрачным для приложений. Приложение может работать только с такими файлами с помощью библиотеки сжатия файлов. Кроме того, единственные операции, которые можно выполнить для таких файлов, создают сжатый файл из исходного и восстанавливают исходные данные из декомпрессоной версии. Редактирование обычно не поддерживается, и поиск ограничен, если он поддерживается вообще.
Как правило, приложение вызывает функции в Lz32.dll для распаковки данных, сжатых с помощью Compress.exe. Функции также могут обрабатывать файлы без попытки распаковки их.
Функции можно использовать в Lz32.dll для распаковки одного или нескольких файлов. Их также можно использовать для распаковки сжатых файлов за раз.
В следующих разделах описано декомпрессия файла, предоставляемое функциями в Lz32.dll:
Шкафы
Шкафы создаются библиотекой сжатия, поддерживающей такие функции, как сжатие дисков и сжатие нескольких файлов. Дополнительные сведения см. в комплекте средств разработки программного обеспечения для кабинета министров: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.
В этом разделе
Тема | Описание |
---|---|
атрибута сжатия |
В томе файловой системы NTFS каждый файл и каталог имеют атрибут сжатия . |
состояния сжатия |
Каждый файл и каталог тома, поддерживающий сжатие отдельных файлов и каталогов, имеет состояние сжатия . |
получение размера сжатого файла |
Чтобы получить сжатый размер файла, используйте функцию GetCompressedFileSize. |
распаковка одного файла |
Приложение может распаковывать один сжатый файл с помощью функций LZOpenFile, LZCopy и LZClose. |
распаковка нескольких файлов |
Приложение может распаковыть несколько файлов с помощью функций LZOpenFile, LZCopy и LZClose. |
чтение из сжатых файлов |
Приложение может распаковывать сжатый файл за раз с помощью функций LZSeek и LZRead. |