Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Algoritmerne Gzip og Zlib bruges populært til at komprimere og dekomprimere filer. Gzip bruges primært til at komprimere enkelte filer, mens Zlib hovedsageligt komprimerer datastrømme. Algoritmerne bruger Deflate Compression Algorithm til komprimering, selvom Gzip giver yderligere funktioner, herunder fejlkontrol og filmetadata.

Gzip har givet bedre kompressionsforhold end Zlib. Gzip kræver dog mere processorkraft for at komprimere og dekomprimere data. I de fleste tilfælde skal du bruge Gzip til at komprimere filer og Zlib til at komprimere datastrømme.

Go giver funktionaliteten til at komprimere data, herunder filer gennem komprimere pakke.

Komprimeringspakken

Det komprimere pakken understøtter komprimering af data gennem komprimere/gzip og komprimere/zlib pakker, blandt andre funktionaliteter.

Det gzip pakken understøtter komprimering og dekomprimering af gzip-filformatdata, inklusive læse- og skriveoperationer som specificeret i

instagram viewer
RFC 1952. Mens zlib pakke hjælper med at komprimere og dekomprimere data i zlib-formatet.

Du kan importere gzip og zlib fra komprimere pakke ved hjælp af importere søgeord.

importere (
"komprimere/gzip"// importer gzip

"komprimere/zlib"// import zlib
)

Komprimering og dekomprimering af filer med Gzip

Gzip er et filformat og en softwareapplikation til filkomprimering og dekomprimering. Gzip bruger Lempel-Ziv-Markov-kædealgoritmen (LZ77) til at komprimere data, og algoritmen bruges ofte til at komprimere tekstfiler, såsom HTML-, CSS- eller JavaScript-filer.

Processen med at komprimere filer med gzip pakken er enkel og intuitiv. Du skal åbne filen, oprette en gzip-fil, oprette en gzip-skriver og kopiere originalen filens indhold til gzip-skriveren før flush-operationen, der sikrer, at skriveprocessen er komplet.

Kør dette bash kommando i terminalen i dit arbejdsbibliotek på Unix-systemer for at oprette en eksempeltekstfil og derefter indsætte tekst i filen.

// opretter en tekstfil.
tryk på eksempel.txt

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

Efter at have oprettet filen og indsat teksten, kan du importere gzip, io, og os pakker til kompressionsoperationen.

Her er hvordan du kan bruge komprimere/gzip pakke til at komprimere en tekstfil.

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

funcvigtigste() {
// Åbn den originale fil
originalFile, fejl := os. Åben("eksempel.txt")
hvis fejl!= nul {
panik(fejl)
}
udsætte originalfil. Tæt()

// Opret en ny gzip-fil
gzippedFile, fejl := os. Skab("eksempel.txt.gz")
hvis fejl!= nul {
panik(fejl)
}
udsætte gzippedFile. Tæt()

// Opret en ny gzip-skriver
gzipWriter := gzip. NewWriter (gzippedFile)
udsætte gzipWriter. Tæt()

// Kopier indholdet af den originale fil til gzip-skriveren
_, fejl = io. Kopi (gzipWriter, originalFile)
hvis fejl!= nul {
panik(fejl)
}

// Skyl gzip-skriveren for at sikre, at alle data er skrevet
gzipWriter. Flush()
}

Det Åben funktion af os pakken åbner tekstfilen, og Tæt funktionen lukker filen med en udsætte udmelding. Det skab funktionen opretter en gzip-fil, og NewWriter funktion af gzip pakken skriver indholdet af tekstfilen til gzip-filen ved hjælp af Kopi funktion af io pakke.

Det Flush metoden til gzipWriter instans fjerner gzip-skriveren, når alle data er tilgængelige på den zippede fil.

Du kan hente den originale fil fra en gzip-fil gennem en dekomprimeringsproces. Processen med at dekomprimere en fil er den samme; du åbner filen og opretter en gzip-fillæser, og lav derefter en ny fil til at opbevare de ukomprimerede data, før du kopierer indholdet til den nye fil.

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

funcvigtigste() {
// Åbn den gzippede fil
gzippedFile, fejl := os. Åben("eksempel.txt.gz")
hvis fejl!= nul {
panik(fejl)
}
udsætte gzippedFile. Tæt()

// Opret en ny gzip-læser
gzipReader, fejl := gzip. NewReader (gzippedFile)
udsætte gzipReader. Tæt()

// Opret en ny fil til at opbevare de ukomprimerede data
uncompressedFile, fejl := os. Skab("eksempel.txt")
hvis fejl!= nul {
panik(fejl)
}
udsætte ukomprimeret fil. Tæt()

// Kopier indholdet af gzip-læseren til den nye fil
_, fejl = io. Kopi (ukomprimeret fil, gzipReader)
hvis fejl!= nul {
panik(fejl)
}
}

Det Åben funktion af os pakken åbner den gzippede fil, og NewReader funktion af gzip pakken læser den zippede fil. Det skab funktion af os pakken opretter en ny tekstfil. Det Kopi funktionen kopierer indholdet af gzipReader til ukomprimeret fil.

Komprimering og dekomprimering af data med Zlib

Zlib er et bibliotek til datakomprimering og dekompression; biblioteket bruger også LZ77-algoritmen. Zlib er skrevet i C og er meget brugt som grundlag for andre komprimeringsbiblioteker og software. I modsætning til gzip, zlib er et bibliotek, og zlib omfatter ikke en filformat. Det bruges dog ofte til at komprimere data, der er gemt i containerformater, såsom PNG eller HTTP.

Processen med at komprimere med zlib er den samme som for gzip. Du skal oprette en zlib-fil, konfigurere en forfatter, åbne den originale fil og kopiere indholdet til den komprimerede fil.

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

funcvigtigste() {
// Opret en ny fil "example.zlib"
fil, fejl := os. Skab("eksempel.zlib")
// Hvis der opstår fejl, skal du gå i panik og stoppe programmet
hvis fejl!= nul {
panik(fejl)
}
// Sørg for, at filen er lukket efter funktionen vender tilbage
udsætte fil. Tæt()

// Opret en ny zlib-skriver med det bedste komprimeringsniveau
forfatter, fejl := zlib. NewWriterLevel (fil, zlib. Bedste kompression)
// Hvis der opstår fejl, skal du gå i panik og stoppe programmet
hvis fejl!= nul {
panik(fejl)
}
// Sørg for, at skribenten er lukket efter funktionen vender tilbage
udsætte forfatter. Tæt()

// Åbn inputfilen "example.txt"
inputFile, fejl := os. Åben("eksempel.txt")
// Hvis der opstår fejl, skal du gå i panik og stoppe programmet
hvis fejl!= nul {
panik(fejl)
}
// Sørg for, at inputfilen er lukket efter funktionen vender tilbage
udsætte inputfil. Tæt()

// Kopier indholdet af inputfilen til forfatteren
io. Kopi (skriver, inputfil)
}

Det skab metoden opretter zlib-filen, og NewWriterLevel funktion opretter en forfatter til filen med den angivne indstilling (i dette tilfælde Bedste kompression mulighed). Det Åben metoden til os pakken åbner tekstfilen, og Kopi funktion af io pakken kopierer indholdet af tekstfilen til zlib-filen i komprimeringsprocessen.

For at dekomprimere zlib-filen skal du åbne den komprimerede fil, oprette en ny zlib-læser og derefter kopiere indholdet af læseren til standardoutput.

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

funcvigtigste() {
// Åbn den komprimerede fil "compressed_file.zlib"
fil, fejl := os. Åben("komprimeret_fil.zlib")
// Hvis der opstår fejl, skal du gå i panik og stoppe programmet
hvis fejl!= nul {
panik(fejl)
}
// Sørg for, at filen er lukket efter funktionen vender tilbage
udsætte fil. Tæt()

// Opret en ny zlib-læser til den komprimerede fil
læser, fejl := zlib. NewReader (fil)
// Hvis der opstår fejl, skal du gå i panik og stoppe programmet
hvis fejl!= nul {
panik(fejl)
}
// Sørg for, at læseren er lukket efter funktionen vender tilbage
udsætte læser. Tæt()

// Kopier indholdet af læseren til standardoutputtet
io. Kopi (os. Stdout, læser)
}

Hovedfunktionen åbner zlib-filen med os pakkens Åben funktion, og NewReader funktion af zlib pakken læser zlib-filen ind i en læserforekomst. Det Kopi metoden til io pakken kopierer indholdet fra læseren til standardoutputtet (i dette tilfælde konsollen).

At skrive kode til filkomprimering er praktisk til at automatisere opgaver og komprimere flere filer. Hvis du kun skal komprimere nogle få filer, kan du ty til at bruge programmer som WinRar, WinZip, Express Zip og Bandizip.