Compartilhar via


Compactação e descompactação de arquivos

Os volumes do sistema de arquivos NTFS dão suporte à compactação de arquivos em uma base de arquivo individual. O algoritmo de compactação de arquivo usado pelo sistema de arquivos NTFS é Lempel-Ziv compactação. Esse é um algoritmo de compactação sem perdas, o que significa que nenhum dado é perdido ao compactar e descompactar o arquivo, em vez de algoritmos de compactação de com perda, como JPEG, em que alguns dados são perdidos sempre que ocorrem compactação de dados e descompactação.

A compactação de dados reduz o tamanho de um arquivo minimizando dados redundantes. Em um arquivo de texto, os dados redundantes podem ocorrer frequentemente caracteres, como o caractere de espaço ou vogais comuns, como as letras e e a; também pode ocorrer com frequência cadeias de caracteres. A compactação de dados cria uma versão compactada de um arquivo minimizando esses dados redundantes.

Cada tipo de algoritmo de compactação de dados minimiza os dados redundantes de maneira exclusiva. Por exemplo, o algoritmo de codificação do Huffman atribui um código a caracteres em um arquivo com base na frequência com que esses caracteres ocorrem. Outro algoritmo de compactação, chamado de codificação de comprimento de execução, gera um valor de duas partes para caracteres repetidos: a primeira parte especifica o número de vezes que o caractere é repetido e a segunda parte identifica o caractere. Outro algoritmo de compactação, conhecido como o algoritmo Lempel-Ziv, converte cadeias de caracteres de comprimento variável em códigos de comprimento fixo que consomem menos espaço do que as cadeias de caracteres originais.

A compactação de arquivos do sistema de arquivos NTFS

No sistema de arquivos NTFS, a compactação é executada de forma transparente. Isso significa que ele pode ser usado sem exigir alterações em aplicativos existentes. Os bytes compactados do arquivo não são acessíveis aos aplicativos; eles vêem apenas os dados descompactados. Portanto, os aplicativos que abrem um arquivo compactado podem operar nele como se não fossem compactados. No entanto, esses arquivos não podem ser copiados para outro sistema de arquivos.

Se você compactar um arquivo maior que 30 gigabytes, a compactação poderá não ter êxito.

Os tópicos a seguir identificam a compactação de arquivos do sistema de arquivos NTFS:

Bibliotecas de compactação e descompactação de arquivos

As bibliotecas de compactação e descompactação de arquivos pegam um arquivo ou arquivos existentes e produzem um arquivo ou arquivos que são versões compactadas dos originais. A compactação também não tem perda, mas a compactação não é transparente para aplicativos. Um aplicativo só pode operar nesses arquivos com a ajuda de uma biblioteca de compactação de arquivos. Além disso, as únicas operações que você pode executar nesses arquivos são a criação de um arquivo compactado de um original e a recuperação dos dados originais da versão descompactada. Normalmente, não há suporte para edição e a busca é limitada se houver suporte.

Normalmente, um aplicativo chama funções em Lz32.dll para descompactar dados compactados usando Compress.exe. As funções também podem processar arquivos sem tentar descompactá-los.

Você pode usar as funções em Lz32.dll para descompactar arquivos únicos ou múltiplos. Você também pode usá-los para descompactar arquivos compactados por parte de cada vez.

Os tópicos a seguir identificam a descompactação de arquivo fornecida pelas funções em Lz32.dll:

Armários

Os gabinetes são criados por uma biblioteca de compactação que dá suporte a recursos como abrangência de disco e compactação de vários arquivos. Para obter informações adicionais, consulte o Kit de Desenvolvimento de Software do Gabinete: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

Nesta seção

Tópico Descrição
de atributo de compactação
Em um volume do sistema de arquivos NTFS, cada arquivo e diretório tem um atributo de compactação .
de Estado de Compactação
Cada arquivo e diretório em um volume que dá suporte à compactação para arquivos e diretórios individuais tem um estado de compactação .
obtendo o tamanho de um arquivo compactado
Para obter o tamanho compactado de um arquivo, use a função GetCompressedFileSize.
descompactando um único arquivo
Um aplicativo pode descompactar um único arquivo compactado usando as funções LZOpenFile, LZCopy e LZClose.
descompactando vários arquivos
Um aplicativo pode descompactar vários arquivos usando as funções LZOpenFile, LZCopy e LZClose.
leitura de arquivos compactados
Um aplicativo pode descompactar um arquivo compactado por parte de cada vez usando as funções LZSeek e LZRead.