Compresión y descompresión de archivos

Los volúmenes del sistema de archivos NTFS admiten la compresión de archivos de forma individual. El algoritmo de compresión de archivos usado por el sistema de archivos NTFS es Lempel-Ziv compresión. Se trata de un algoritmo de compresión sin pérdida , lo que significa que no se pierden datos al comprimir y descomprimir el archivo, en lugar de algoritmos de compresión perdida como JPEG, donde se pierden algunos datos cada vez que se producen compresión y descompresión de datos.

La compresión de datos reduce el tamaño de un archivo al minimizar los datos redundantes. En un archivo de texto, los datos redundantes pueden producirse con frecuencia caracteres, como el carácter de espacio o los vocales comunes, como las letras e y a; también puede producirse con frecuencia cadenas de caracteres. La compresión de datos crea una versión comprimida de un archivo minimizando estos datos redundantes.

Cada tipo de algoritmo de compresión de datos minimiza los datos redundantes de una manera única. Por ejemplo, el algoritmo de codificación Huffman asigna un código a caracteres de un archivo en función de la frecuencia con la que se producen esos caracteres. Otro algoritmo de compresión, denominado codificación de longitud de ejecución, genera un valor de dos partes para caracteres repetidos: la primera parte especifica el número de veces que se repite el carácter y la segunda parte identifica el carácter. Otro algoritmo de compresión, conocido como algoritmo Lempel-Ziv, convierte cadenas de longitud variable en códigos de longitud fija que consumen menos espacio que las cadenas originales.

Compresión de archivos del sistema de archivos NTFS

En el sistema de archivos NTFS, la compresión se realiza de forma transparente. Esto significa que se puede usar sin necesidad de cambios en las aplicaciones existentes. Los bytes comprimidos del archivo no son accesibles para las aplicaciones; solo ven los datos sin comprimir. Por lo tanto, las aplicaciones que abren un archivo comprimido pueden funcionar en él como si no se comprimieran. Sin embargo, estos archivos no se pueden copiar en otro sistema de archivos.

Si comprime un archivo de más de 30 gigabytes, es posible que la compresión no se realice correctamente.

En los temas siguientes se identifica la compresión de archivos del sistema de archivos NTFS:

Bibliotecas de compresión y descompresión de archivos

Las bibliotecas de compresión y descompresión de archivos toman un archivo o archivos existentes y generan un archivo o archivos que son versiones comprimidas de los originales. La compresión también no se pierde, pero la compresión no es transparente para las aplicaciones. Una aplicación solo puede funcionar en estos archivos con la ayuda de una biblioteca de compresión de archivos. Además, las únicas operaciones que puede realizar en estos archivos crean un archivo comprimido a partir de un original y recuperan los datos originales de la versión descomprimida. Normalmente, no se admite la edición y la búsqueda es limitada si se admite en absoluto.

Normalmente, una aplicación llama a funciones en Lz32.dll para descomprimir los datos comprimidos mediante Compress.exe. Las funciones también pueden procesar archivos sin intentar descomprimirlos.

Puede usar las funciones de Lz32.dll para descomprimir uno o varios archivos. También puede usarlos para descomprimir archivos comprimidos una parte a la vez.

En los temas siguientes se identifica la descompresión de archivos proporcionada por las funciones de Lz32.dll:

Gabinetes

Los gabinetes se crean mediante una biblioteca de compresión que admite características como la expansión de disco y la compresión de varios archivos. Para obtener más información, vea Kit de desarrollo de software de gabinete: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

En esta sección

Tema Descripción
Atributo de compresión
En un volumen del sistema de archivos NTFS, cada archivo y directorio tiene un atributo de compresión.
Estado de compresión
Cada archivo y directorio de un volumen que admite la compresión para archivos y directorios individuales tiene un estado de compresión.
Obtener el tamaño de un archivo comprimido
Para obtener el tamaño comprimido de un archivo, use la función GetCompressedFileSize.
Descompresión de un único archivo
Una aplicación puede descomprimir un único archivo comprimido mediante las funciones LZOpenFile, LZCopy y LZClose.
Descompresión de varios archivos
Una aplicación puede descomprimir varios archivos mediante las funciones LZOpenFile, LZCopy y LZClose.
Lectura de archivos comprimidos
Una aplicación puede descomprimir un archivo comprimido una parte a la vez mediante las funciones LZSeek y LZRead.