Compressione e decompressione dei file

I volumi del file system NTFS supportano la compressione dei file su base singola. L'algoritmo di compressione dei file usato dal file system NTFS è Lempel-Ziv compressione. Si tratta di un algoritmo di compressione senza perdita, che significa che non vengono persi dati durante la compressione e la decompressione del file, anziché algoritmi di compressione con perdita , ad esempio JPEG, in cui alcuni dati vengono persi ogni volta che si verificano compressione e 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 i 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 a caratteri in un file in base alla frequenza con cui si verificano tali caratteri. Un altro algoritmo di compressione, denominato codifica run-length, genera un valore a 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 funzionare 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 con 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 compressi delle versioni originali. La compressione è anche senza perdita, ma la compressione non è trasparente alle applicazioni. Un'applicazione può funzionare solo su tali file con l'assistenza di una libreria di compressione file. Inoltre, le uniche operazioni che è possibile eseguire su tali file creano un file compresso da un file 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.

Gli argomenti seguenti identificano la decompressione del file fornita dalle funzioni in Lz32.dll:

Armadi

Gli archivi vengono creati da una libreria di compressione che supporta funzionalità come l'estensione del disco e la compressione multi-file. Per altre informazioni, vedere Cabinet Software Development Kit: https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp.

Contenuto della sezione

Argomento Descrizione
Attributo di compressione
In un volume del file system NTFS ogni file e directory ha 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.
Recupero delle dimensioni di un file compresso
Per ottenere le dimensioni compresse di un file, usare la funzione GetCompressedFileSize.
Decompressione di 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 alla volta usando le funzioni LZSeek e LZRead.