Algoritma Gzip in Zlib se pogosto uporabljata za stiskanje in dekompresijo datotek. Gzip se uporablja predvsem za stiskanje posameznih datotek, Zlib pa predvsem stiskanje podatkovnih tokov. Algoritmi uporabljajo algoritem stiskanja Deflate za stiskanje, čeprav Gzip ponuja dodatne funkcije, vključno s preverjanjem napak in metapodatki datotek.
Gzip je zagotovil boljša razmerja stiskanja kot Zlib. Vendar pa Gzip potrebuje več procesorske moči za stiskanje in dekompresijo podatkov. V večini primerov bi morali uporabiti Gzip za stiskanje datotek in Zlib za stiskanje podatkovnih tokov.
Go ponuja funkcionalnost za stiskanje podatkov, vključno z datotekami prek stisniti paket.
Paket Compress
The stisniti paket podpira stiskanje podatkov prek stisniti/gzip in stisniti/zlib paketi, med drugimi funkcijami.
The gzip paket podpira stiskanje in dekompresijo podatkov v formatu datoteke gzip, vključno z operacijami branja in pisanja, kot je določeno v
RFC 1952. Medtem ko je zlib paket pomaga pri stiskanju in razpakiranju podatkov v formatu zlib.Lahko uvozite gzip in zlib Iz stisniti paket z uporabo uvoz ključna beseda.
uvoz (
"stisni/gzip"// uvozi gzip
"stisni/zlib"// uvozi zlib
)
Stiskanje in dekompresiranje datotek z Gzip
Gzip je format datoteke in programska aplikacija za stiskanje in dekompresijo datotek. Gzip uporablja verižni algoritem Lempel-Ziv-Markov (LZ77) za stiskanje podatkov, algoritem pa se pogosto uporablja za stiskanje besedilnih datotek, kot so datoteke HTML, CSS ali JavaScript.
Postopek stiskanja datotek z gzip paket je preprost in intuitiven. Datoteko boste morali odpreti, ustvariti gzip datoteko, ustvariti zapisovalnik gzip in kopirati izvirnik vsebino datoteke zapisovalniku gzip pred operacijo splakovanja, ki zagotavlja, da je postopek zapisovanja popolna.
Zaženi to ukaz bash v terminalu vašega delovnega imenika v sistemih Unix, da ustvarite vzorčno besedilno datoteko in nato vstavite besedilo v datoteko.
// ustvari besedilno datoteko.
dotik example.txt
// posreduje niz v datoteko
echo 'Pozdravljen, svet!' > example.txt}
Ko ustvarite datoteko in vstavite besedilo, lahko uvozite gzip, io, in os paketi za operacijo stiskanja.
Tukaj je opisano, kako lahko uporabite stisniti/gzip paket za stiskanje besedilne datoteke.
uvoz (
"stisni/gzip"
"io"
"os"
)funkglavni() {
// Odpri izvirno datoteko
izvirna datoteka, napaka := os. Odprto("primer.txt")
če napaka!= nič {
panika(napaka)
}
odložiti originalFile. Zapri()// Ustvarite novo datoteko gzip
gzippedFile, napaka := os. Ustvari ("example.txt.gz")
če napaka!= nič {
panika(napaka)
}
odložiti gzippedFile. Zapri()// Ustvari nov zapisovalnik gzip
gzipWriter := gzip. NewWriter (gzippedFile)
odložiti gzipWriter. Zapri()// Kopiraj vsebino izvirne datoteke v zapisovalnik gzip
_, napaka = io. Kopiraj (gzipWriter, originalFile)
če napaka!= nič {
panika(napaka)
}
// Izpraznite zapisovalnik gzip, da zagotovite, da so vsi podatki zapisani
gzipWriter. Izplakni()
}
The Odprto funkcija os paket odpre besedilno datoteko in Zapri funkcija zapre datoteko z a odložiti izjava. The Ustvari funkcija ustvari gzip datoteko in NewWriter funkcija gzip paket zapiše vsebino besedilne datoteke v datoteko gzip z uporabo Kopirati funkcija io paket.
The Izperite metoda gzipWriter primerek izprazni pisalnik gzip, ko so na voljo vsi podatki v stisnjeni datoteki.
Izvirno datoteko lahko pridobite iz datoteke gzip s postopkom dekompresije. Postopek dekompresije datoteke je podoben; odprli boste datoteko in ustvarili bralnik datotek gzip, nato pa ustvarili novo datoteko za shranjevanje nestisnjenih podatkov, preden vsebino kopirate v novo datoteko.
uvoz (
"stisni/gzip"
"io"
"os"
)funkglavni() {
// Odpri datoteko gzip
gzippedFile, napaka := os. Odprto("example.txt.gz")
če napaka!= nič {
panika(napaka)
}
odložiti gzippedFile. Zapri()// Ustvari nov bralnik gzip
gzipReader, napaka := gzip. NewReader (gzippedFile)
odložiti gzipReader. Zapri()// Ustvarite novo datoteko za shranjevanje nestisnjenih podatkov
nestisnjena datoteka, napaka := os. Ustvari ("primer.txt")
če napaka!= nič {
panika(napaka)
}
odložiti nestisnjena datoteka. Zapri()
// Kopirajte vsebino bralnika gzip v novo datoteko
_, napaka = io. Kopiraj (nestisnjena datoteka, gzipReader)
če napaka!= nič {
panika(napaka)
}
}
The Odprto funkcija os paket odpre datoteko gzip in NewReader funkcija gzip paket prebere stisnjeno datoteko. The Ustvari funkcija os paket ustvari novo besedilno datoteko. The Kopirati funkcija kopira vsebino gzipReader do nestisnjena datoteka.
Stiskanje in dekompresiranje podatkov z Zlib
Zlib je knjižnica za stiskanje in dekompresijo podatkov; knjižnica uporablja tudi algoritem LZ77. Zlib je napisan v C in se široko uporablja kot osnova za druge knjižnice in programsko opremo za stiskanje. Za razliko od gzip, zlib je knjižnica in zlib ne vključuje a format datoteke. Vendar se pogosto uporablja za stiskanje podatkov, shranjenih v formatih vsebnikov, kot sta PNG ali HTTP.
Postopek stiskanja z zlibom je enak kot za gzip. Ustvarili boste datoteko zlib, konfigurirali zapisovalnik, odprli izvirno datoteko in kopirali vsebino v stisnjeno datoteko.
uvoz (
"stisni/zlib"
"io"
"os"
)funkglavni() {
// Ustvari novo datoteko "example.zlib"
datoteka, napaka := os. Ustvari ("example.zlib")
// Če pride do napake, prestrašite in ustavite program
če napaka!= nič {
panika(napaka)
}
// Zagotovite, da je datoteka zaprta po vrnitvi funkcije
odložiti mapa. Zapri()// Ustvari nov zapisovalnik zlib z najboljšo stopnjo stiskanja
pisec, err := zlib. NewWriterLevel (datoteka, zlib. BestCompression)
// Če pride do napake, prestrašite in ustavite program
če napaka!= nič {
panika(napaka)
}
// Zagotovite, da je zapisovalnik zaprt, potem ko se funkcija vrne
odložiti pisatelj. Zapri()// Odprite vhodno datoteko "example.txt"
vhodna datoteka, napaka := os. Odprto("primer.txt")
// Če pride do napake, prestrašite in ustavite program
če napaka!= nič {
panika(napaka)
}
// Zagotovite, da je vhodna datoteka zaprta po vrnitvi funkcije
odložiti inputFile. Zapri()
// Kopiraj vsebino vhodne datoteke v zapisovalnik
io. Kopiraj (pisovalec, vhodna datoteka)
}
The Ustvari metoda ustvari datoteko zlib in NewWriterLevel funkcija ustvari zapisovalca za datoteko s podano možnostjo (v tem primeru Najboljše stiskanje možnost). The Odprto metoda os paket odpre besedilno datoteko in Kopirati funkcija io paket kopira vsebino besedilne datoteke v datoteko zlib v procesu stiskanja.
Če želite razpakirati datoteko zlib, boste morali odpreti stisnjeno datoteko, ustvariti nov bralnik zlib in nato končno kopirati vsebino bralnika v standardni izhod.
uvoz (
"stisni/zlib"
"io"
"os"
)funkglavni() {
// Odprite stisnjeno datoteko "compressed_file.zlib"
datoteka, napaka := os. Odprto("stisnjena_datoteka.zlib")
// Če pride do napake, prestrašite in ustavite program
če napaka!= nič {
panika(napaka)
}
// Zagotovite, da je datoteka zaprta po vrnitvi funkcije
odložiti mapa. Zapri()// Ustvari nov bralnik zlib za stisnjeno datoteko
bralec, err := zlib. NewReader (datoteka)
// Če pride do napake, prestrašite in ustavite program
če napaka!= nič {
panika(napaka)
}
// Zagotovite, da je bralnik zaprt, ko se funkcija vrne
odložiti bralec. Zapri()
// Kopiraj vsebino bralnika v standardni izhod
io. Kopiraj (os. Stdout, bralec)
}
Glavna funkcija odpre datoteko zlib z os paketi Odprto funkcijo in NewReader funkcija zlib paket prebere datoteko zlib v primerek bralnika. The Kopirati metoda io paket kopira vsebino iz bralnika v standardni izhod (v tem primeru konzolo).
Pisanje kode za stiskanje datotek je priročno za avtomatizacijo opravil in stiskanje več datotek. Če morate stisniti le nekaj datotek, lahko uporabite aplikacije, kot so WinRar, WinZip, Express Zip in Bandizip.