I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

Gli algoritmi Gzip e Zlib sono comunemente usati per comprimere e decomprimere i file. Gzip viene utilizzato principalmente per comprimere singoli file, mentre Zlib comprime principalmente flussi di dati. Gli algoritmi utilizzano l'algoritmo di compressione Deflate per la compressione, sebbene Gzip fornisca funzionalità aggiuntive tra cui il controllo degli errori e i metadati dei file.

Gzip ha fornito rapporti di compressione migliori rispetto a Zlib. Tuttavia, Gzip richiede più potenza di elaborazione per comprimere e decomprimere i dati. Nella maggior parte dei casi, dovresti usare Gzip per comprimere i file e Zlib per comprimere i flussi di dati.

Go fornisce la funzionalità per la compressione dei dati, inclusi i file tramite il formato comprimere pacchetto.

Il pacchetto Compress

IL comprimere Il pacchetto supporta la compressione dei dati tramite il

instagram viewer
comprimere/gzip E comprimere/zlib pacchetti, tra le altre funzionalità.

IL gzip Il pacchetto supporta la compressione e la decompressione dei dati in formato file gzip, comprese le operazioni di lettura e scrittura come specificato in RFC 1952. Mentre il zlib package aiuta a comprimere e decomprimere i dati nel formato zlib.

Puoi importare gzip E zlib dal comprimere pacchetto utilizzando il importare parola chiave.

importare (
"comprimere/gzip"// importa gzip

"comprimere/zlib"// importa zlib
)

Comprimere e decomprimere i file con Gzip

Gzip è un formato di file e un'applicazione software per la compressione e la decompressione dei file. Gzip utilizza l'algoritmo della catena Lempel-Ziv-Markov (LZ77) per comprimere i dati e l'algoritmo viene spesso utilizzato per comprimere file di testo, come file HTML, CSS o JavaScript.

Il processo di compressione dei file con l'estensione gzip pacchetto è semplice ed intuitivo. Dovrai aprire il file, creare un file compresso con gzip, creare un writer gzip e copiare l'originale contenuto del file al writer gzip prima dell'operazione di flush che garantisce il processo di scrittura completare.

Esegui questo comando bash nel terminale della tua directory di lavoro su sistemi Unix per creare un file di testo di esempio e quindi inserire il testo nel file.

// crea un file di testo.
tocca esempio.txt

// reindirizza la stringa al file
echo 'Ciao, mondo!' > esempio.txt}

Dopo aver creato il file e inserito il testo, puoi importare il file gzip, io, E os pacchetti per l'operazione di compressione.

Ecco come puoi utilizzare il comprimere/gzip package per comprimere un file di testo.

importare (
"comprimere/gzip"
"io"
"os"
)

funzprincipale() {
// Apre il file originale
originalFile, err := os. Aprire("esempio.txt")
Se errare!= zero {
panico(errare)
}
differire originalFile. Vicino()

// Crea un nuovo file gzippato
gzippedFile, err := os. Creare("esempio.txt.gz")
Se errare!= zero {
panico(errare)
}
differire gzippedFile. Vicino()

// Crea un nuovo scrittore gzip
gzipWriter := gzip. NewWriter (file gzipped)
differire gzip Writer. Vicino()

// Copia il contenuto del file originale nel writer gzip
_, err = io. Copia (gzipWriter, originalFile)
Se errare!= zero {
panico(errare)
}

// Svuota il writer gzip per assicurarsi che tutti i dati vengano scritti
gzip Writer. Sciacquone()
}

IL Aprire funzione del os package apre il file di testo e il file Vicino La funzione chiude il file con a differire dichiarazione. IL Creare la funzione crea un file compresso con gzip e il file Nuovo scrittore funzione del gzip Il pacchetto scrive il contenuto del file di testo nel file gzip utilizzando l'estensione copia funzione del io pacchetto.

IL Sciacquone metodo del gzip Writer instance svuota il writer gzip una volta che tutti i dati sono disponibili nel file zippato.

È possibile recuperare il file originale da un file gzippato tramite un processo di decompressione. Il processo di decompressione di un file è simile; aprirai il file e creerai un lettore di file gzip, quindi creerai un nuovo file per contenere i dati non compressi prima di copiare il contenuto nel nuovo file.

importare (
"comprimere/gzip"
"io"
"os"
)

funzprincipale() {
// Apre il file gzippato
gzippedFile, err := os. Aprire("esempio.txt.gz")
Se errare!= zero {
panico(errare)
}
differire gzippedFile. Vicino()

// Crea un nuovo lettore gzip
gzipReader, err := gzip. NewReader (gzippedFile)
differire gzipReader. Vicino()

// Crea un nuovo file per contenere i dati non compressi
uncompressedFile, err := os. Creare("esempio.txt")
Se errare!= zero {
panico(errare)
}
differire file non compresso. Vicino()

// Copia il contenuto del lettore gzip nel nuovo file
_, err = io. Copia (File non compresso, gzipReader)
Se errare!= zero {
panico(errare)
}
}

IL Aprire funzione del os package apre il file compresso con gzip e il file Nuovo lettore funzione del gzip package legge il file zippato. IL Creare funzione del os package crea un nuovo file di testo. IL copia funzione copia il contenuto del file gzipReader al file non compresso.

Comprimere e decomprimere i dati con Zlib

Zlib è una libreria per la compressione e decompressione dei dati; la libreria utilizza anche l'algoritmo LZ77. Zlib è scritto in C ed è ampiamente utilizzato come base per altre librerie e software di compressione. A differenza di gzip, zlib è una biblioteca, e zlib non include a formato del file. Tuttavia, viene spesso utilizzato per comprimere i dati archiviati in formati contenitore, come PNG o HTTP.

Il processo di compressione con zlib è lo stesso di gzip. Creerai un file zlib, configurerai un writer, aprirai il file originale e copierai il contenuto nel file compresso.

importare (
"comprimere/zlib"
"io"
"os"
)

funzprincipale() {
// Crea un nuovo file "esempio.zlib"
file, err := os. Creare("esempio.zlib")
// Se si verifica un errore, va in panico e interrompe il programma
Se errare!= zero {
panico(errare)
}
// Assicurarsi che il file sia chiuso dopo che la funzione è tornata
differire file. Vicino()

// Crea un nuovo scrittore zlib con il miglior livello di compressione
scrittore, err := zlib. NewWriterLevel (file, zlib. Migliore compressione)
// Se si verifica un errore, va in panico e interrompe il programma
Se errare!= zero {
panico(errare)
}
// Assicurarsi che il writer sia chiuso dopo il ritorno della funzione
differire scrittore. Vicino()

// Apre il file di input "example.txt"
inputFile, err := os. Aprire("esempio.txt")
// Se si verifica un errore, va in panico e interrompe il programma
Se errare!= zero {
panico(errare)
}
// Assicurarsi che il file di input sia chiuso dopo il ritorno della funzione
differire file di input. Vicino()

// Copia il contenuto del file di input nel writer
io. Copia (scrittore, inputFile)
}

IL Creare Il metodo crea il file zlib e il file Nuovo Livello Scrittore La funzione crea un writer per il file con l'opzione specificata (in questo caso, il file Migliore compressione opzione). IL Aprire metodo del os package apre il file di testo e il file copia funzione del io package copia il contenuto del file di testo nel file zlib nel processo di compressione.

Per decomprimere il file zlib, dovrai aprire il file compresso, creare un nuovo lettore zlib e infine copiare il contenuto del lettore nell'output standard.

importare (
"comprimere/zlib"
"io"
"os"
)

funzprincipale() {
// Apre il file compresso "file_compresso.zlib"
file, err := os. Aprire("file_compresso.zlib")
// Se si verifica un errore, va in panico e interrompe il programma
Se errare!= zero {
panico(errare)
}
// Assicurarsi che il file sia chiuso dopo che la funzione è tornata
differire file. Vicino()

// Crea un nuovo lettore zlib per il file compresso
lettore, err := zlib. NewReader (file)
// Se si verifica un errore, va in panico e interrompe il programma
Se errare!= zero {
panico(errare)
}
// Assicurarsi che il lettore sia chiuso dopo il ritorno della funzione
differire lettore. Vicino()

// Copia il contenuto del lettore nell'output standard
io. Copia (os. Stdout, lettore)
}

La funzione principale apre il file zlib con l'estensione os Pacchetti Aprire funzione, e il Nuovo lettore funzione del zlib package legge il file zlib in un'istanza del lettore. IL copia metodo del io package copia il contenuto dal lettore allo standard output (in questo caso, la console).

Scrivere codice per la compressione dei file è utile per automatizzare le attività e comprimere diversi file. Se hai solo bisogno di comprimere pochi file, puoi ricorrere all'utilizzo di applicazioni come WinRar, WinZip, Express Zip e Bandizip.