Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Algoritmene Gzip og Zlib brukes populært til å komprimere og dekomprimere filer. Gzip brukes først og fremst til å komprimere enkeltfiler, mens Zlib hovedsakelig komprimerer datastrømmer. Algoritmene bruker Deflate Compression Algorithm for komprimering, selv om Gzip gir tilleggsfunksjoner, inkludert feilkontroll og filmetadata.

Gzip har gitt bedre komprimeringsforhold enn Zlib. Gzip krever imidlertid mer prosessorkraft for å komprimere og dekomprimere data. I de fleste tilfeller bør du bruke Gzip for å komprimere filer og Zlib for å komprimere datastrømmer.

Go gir funksjonaliteten for å komprimere data, inkludert filer gjennom komprimere pakke.

Komprimeringspakken

De komprimere pakken støtter komprimering av data gjennom komprimere/gzip og komprimere/zlib pakker, blant andre funksjoner.

De gzip pakken støtter komprimering og dekomprimering av gzip-filformatdata, inkludert lese- og skriveoperasjoner som spesifisert i

instagram viewer
RFC 1952. Mens zlib pakken hjelper med å komprimere og dekomprimere data i zlib-formatet.

Du kan importere gzip og zlib fra komprimere pakke ved hjelp av import nøkkelord.

import (
"komprimere/gzip"// importer gzip

"komprimere/zlib"// importer zlib
)

Komprimering og dekomprimering av filer med Gzip

Gzip er et filformat og en programvareapplikasjon for filkomprimering og dekomprimering. Gzip bruker Lempel-Ziv-Markov-kjedealgoritmen (LZ77) for å komprimere data, og algoritmen brukes ofte til å komprimere tekstfiler, som HTML-, CSS- eller JavaScript-filer.

Prosessen med å komprimere filer med gzip pakken er enkel og intuitiv. Du må åpne filen, lage en gzip-fil, opprette en gzip-skriver og kopiere originalen filens innhold til gzip-skriveren før flush-operasjonen som sikrer at skriveprosessen er fullstendig.

Kjør dette bash kommando i terminalen til arbeidskatalogen din på Unix-systemer for å lage en eksempeltekstfil og deretter sette inn tekst i filen.

// lager en tekstfil.
trykk på eksempel.txt

// overfører strengen til filen
echo 'Hei, verden!' > eksempel.txt}

Etter å ha opprettet filen og satt inn teksten, kan du importere gzip, io, og os pakker for komprimeringsoperasjonen.

Her er hvordan du kan bruke komprimere/gzip pakke for å komprimere en tekstfil.

import (
"komprimere/gzip"
"io"
"os"
)

funchoved-() {
// Åpne den opprinnelige filen
originalfil, feil := os. Åpen(«example.txt»)
hvis feil!= null {
panikk(feil)
}
utsette originalfil. Lukk()

// Opprett en ny gzip-fil
gzippedFile, feil := os. Skape(«example.txt.gz»)
hvis feil!= null {
panikk(feil)
}
utsette gzippedFile. Lukk()

// Opprett en ny gzip-skriver
gzipWriter := gzip. NewWriter (gzippedFile)
utsette gzipWriter. Lukk()

// Kopier innholdet i originalfilen til gzip-skriveren
_, feil = io. Kopi (gzipWriter, originalFile)
hvis feil!= null {
panikk(feil)
}

// Skyll gzip-skriveren for å sikre at alle data er skrevet
gzipWriter. Skyll()
}

De Åpen funksjonen til os pakken åpner tekstfilen, og Lukk funksjonen lukker filen med en utsette uttalelse. De Skape funksjonen oppretter en gzip-fil, og NewWriter funksjonen til gzip pakken skriver innholdet i tekstfilen til gzip-filen ved hjelp av Kopiere funksjonen til io pakke.

De Skyll metoden for gzipWriter instans tømmer gzip-skriveren når alle dataene er tilgjengelige på den zippede filen.

Du kan hente den originale filen fra en gzip-fil gjennom en dekomprimeringsprosess. Prosessen med å dekomprimere en fil er lik; du åpner filen og oppretter en gzip-filleser, og oppretter deretter en ny fil for å holde de ukomprimerte dataene før du kopierer innholdet til den nye filen.

import (
"komprimere/gzip"
"io"
"os"
)

funchoved-() {
// Åpne den gzippede filen
gzippedFile, feil := os. Åpen(«example.txt.gz»)
hvis feil!= null {
panikk(feil)
}
utsette gzippedFile. Lukk()

// Opprett en ny gzip-leser
gzipReader, feil := gzip. NewReader (gzippedFile)
utsette gzipReader. Lukk()

// Opprett en ny fil for å holde de ukomprimerte dataene
uncompressedFile, feil := os. Skape(«example.txt»)
hvis feil!= null {
panikk(feil)
}
utsette ukomprimert fil. Lukk()

// Kopier innholdet i gzip-leseren til den nye filen
_, feil = io. Kopier (ukomprimert fil, gzipReader)
hvis feil!= null {
panikk(feil)
}
}

De Åpen funksjonen til os pakken åpner den gzippede filen, og NewReader funksjonen til gzip pakken leser den zippede filen. De Skape funksjonen til os pakken oppretter en ny tekstfil. De Kopiere funksjonen kopierer innholdet i gzipReader til ukomprimert fil.

Komprimering og dekomprimering av data med Zlib

Zlib er et bibliotek for datakomprimering og dekompresjon; biblioteket bruker også LZ77-algoritmen. Zlib er skrevet i C og er mye brukt som grunnlag for andre komprimeringsbiblioteker og programvare. I motsetning til gzip, zlib er et bibliotek, og zlib inkluderer ikke en filformat. Imidlertid brukes det ofte til å komprimere data som er lagret i containerformater, for eksempel PNG eller HTTP.

Prosessen med å komprimere med zlib er den samme som for gzip. Du oppretter en zlib-fil, konfigurerer en forfatter, åpner originalfilen og kopierer innholdet til den komprimerte filen.

import (
"komprimere/zlib"
"io"
"os"
)

funchoved-() {
// Opprett en ny fil "example.zlib"
fil, feil := os. Skape("example.zlib")
// Hvis feil oppstår, få panikk og stopp programmet
hvis feil!= null {
panikk(feil)
}
// Sørg for at filen er lukket etter at funksjonen kommer tilbake
utsette fil. Lukk()

// Lag en ny zlib-skriver med det beste komprimeringsnivået
forfatter, feil := zlib. NewWriterLevel (fil, zlib. BestCompression)
// Hvis feil oppstår, få panikk og stopp programmet
hvis feil!= null {
panikk(feil)
}
// Sørg for at skriveren er lukket etter at funksjonen kommer tilbake
utsette forfatter. Lukk()

// Åpne inndatafilen "example.txt"
inputFile, feil := os. Åpen(«example.txt»)
// Hvis feil oppstår, få panikk og stopp programmet
hvis feil!= null {
panikk(feil)
}
// Sørg for at inndatafilen er lukket etter at funksjonen kommer tilbake
utsette inputFile. Lukk()

// Kopier innholdet i inndatafilen til forfatteren
io. Kopi (skriver, inputFile)
}

De Skape metoden oppretter zlib-filen, og NewWriterLevel funksjonen oppretter en forfatter for filen med det spesifiserte alternativet (i dette tilfellet BestCompression alternativ). De Åpen metoden for os pakken åpner tekstfilen, og Kopiere funksjonen til io pakken kopierer innholdet i tekstfilen til zlib-filen i komprimeringsprosessen.

For å dekomprimere zlib-filen, må du åpne den komprimerte filen, opprette en ny zlib-leser, og til slutt kopiere innholdet i leseren til standardutdata.

import (
"komprimere/zlib"
"io"
"os"
)

funchoved-() {
// Åpne den komprimerte filen "compressed_file.zlib"
fil, feil := os. Åpen("compressed_file.zlib")
// Hvis feil oppstår, få panikk og stopp programmet
hvis feil!= null {
panikk(feil)
}
// Sørg for at filen er lukket etter at funksjonen kommer tilbake
utsette fil. Lukk()

// Lag en ny zlib-leser for den komprimerte filen
leser, feil := zlib. NewReader (fil)
// Hvis feil oppstår, få panikk og stopp programmet
hvis feil!= null {
panikk(feil)
}
// Sørg for at leseren er lukket etter at funksjonen kommer tilbake
utsette leser. Lukk()

// Kopier innholdet i leseren til standardutgangen
io. Kopi (os. Stdout, leser)
}

Hovedfunksjonen åpner zlib-filen med os pakkens Åpen funksjon, og NewReader funksjonen til zlib pakken leser zlib-filen inn i en leserforekomst. De Kopiere metoden for io pakken kopierer innholdet fra leseren til standardutgangen (i dette tilfellet konsollen).

Å skrive kode for filkomprimering er nyttig for å automatisere oppgaver og komprimere flere filer. Hvis du bare trenger å komprimere noen få filer, kan du ty til å bruke programmer som WinRar, WinZip, Express Zip og Bandizip.