Condividi tramite


Compressione e decompressione dei file

I volumi del file system NTFS supportano la compressione dei file su base individuale. L'algoritmo di compressione file usato dal file system NTFS è Lempel-Ziv compressione. Si tratta di un algoritmo di compressione senza perdita di dati, il che significa che nessun dato viene perso durante la compressione e la decompressione del file, anziché perdita di algoritmi di compressione, ad esempio JPEG, in cui alcuni dati vengono persi ogni volta che si verificano la compressione e la decompressione dei dati.

La compressione dei dati riduce le dimensioni di un file riducendo al minimo i dati ridondanti. In un file di testo, i dati ridondanti possono essere spesso presenti caratteri, ad esempio il carattere spazio, o vocali comuni, ad esempio le lettere e a; può anche verificarsi spesso stringhe di caratteri. La compressione dei dati crea una versione compressa di un file riducendo al minimo questi dati ridondanti.

Ogni tipo di algoritmo di compressione dei dati riduce al minimo i dati ridondanti in modo univoco. Ad esempio, l'algoritmo di codifica Huffman assegna un codice ai caratteri in un file in base alla frequenza con cui si verificano tali caratteri. Un altro algoritmo di compressione, denominato codifica della lunghezza di esecuzione, genera un valore in due parti per i caratteri ripetuti: la prima parte specifica il numero di volte in cui il carattere viene ripetuto e la seconda parte identifica il carattere. Un altro algoritmo di compressione, noto come algoritmo Lempel-Ziv, converte le stringhe a lunghezza variabile in codici a lunghezza fissa che utilizzano meno spazio rispetto alle stringhe originali.

Compressione file system NTFS

Nel file system NTFS la compressione viene eseguita in modo trasparente. Ciò significa che può essere usato senza richiedere modifiche alle applicazioni esistenti. I byte compressi del file non sono accessibili alle applicazioni; visualizzano solo i dati non compressi. Pertanto, le applicazioni che aprono un file compresso possono operare su di esso come se non fosse compresso. Tuttavia, questi file non possono essere copiati in un altro file system.

Se si comprime un file di dimensioni superiori a 30 gigabyte, la compressione potrebbe non riuscire.

Gli argomenti seguenti identificano la compressione dei file system NTFS:

Librerie di compressione e decompressione dei file

Le librerie di compressione e decompressione dei file accettano un file o file esistenti e producono un file o file che sono versioni compresse degli originali. La compressione è anche senza perdita di dati, ma la compressione non è trasparente per le applicazioni. Un'applicazione può operare solo su tali file con l'assistenza di una libreria di compressione file. Inoltre, le uniche operazioni che è possibile eseguire su tali file stanno creando un file compresso da un originale e recuperando i dati originali dalla versione decompressa. La modifica non è in genere supportata e la ricerca è limitata se supportata.

In genere, un'applicazione chiama funzioni in Lz32.dll per decomprimere i dati compressi usando Compress.exe. Le funzioni possono anche elaborare i file senza tentare di decomprimerli.

È possibile usare le funzioni in Lz32.dll per decomprimere singoli o più file. È anche possibile usarli per decomprimere i file compressi una parte alla volta.

Negli argomenti seguenti viene identificata la decompressione di file fornita dalle funzioni in Lz32.dll:

Armadi

I cabinet vengono creati da una libreria di compressione che supporta funzionalità come lo spanning del disco e la compressione a più file. Per altre informazioni, vedere Cabinet Software Development Kit: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

In questa sezione

Argomento Descrizione
dell'attributo di compressione
In un volume del file system NTFS ogni file e directory dispone di un attributo di compressione .
stato di compressione
Ogni file e directory in un volume che supporta la compressione per singoli file e directory ha uno stato di compressione .
ottenere le dimensioni di un file compresso
Per ottenere le dimensioni compresse di un file, usare la funzione GetCompressedFileSize.
decomprimere un singolo file
Un'applicazione può decomprimere un singolo file compresso usando le funzioni LZOpenFile, LZCopy e LZClose.
decompressione di più file
Un'applicazione può decomprimere più file usando le funzioni LZOpenFile, LZCopy e LZClose.
lettura da file compressi
Un'applicazione può decomprimere un file compresso una parte alla volta usando le funzioni LZSeek e LZRead.