Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Gzip ir Zlib algoritmai plačiai naudojami failams suspausti ir išskleisti. Gzip pirmiausia naudojamas atskiriems failams suspausti, o Zlib daugiausia glaudina duomenų srautus. Algoritmai glaudinimui naudoja glaudinimo algoritmo sumažinimą, nors Gzip suteikia papildomų funkcijų, įskaitant klaidų tikrinimą ir failų metaduomenis.

„Gzip“ suteikė geresnius suspaudimo laipsnius nei „Zlib“. Tačiau „Gzip“ reikalauja daugiau apdorojimo galios duomenims suspausti ir išskleisti. Daugeliu atvejų failams glaudinti turėtumėte naudoti Gzip, o duomenų srautams glaudinti Zlib.

„Go“ suteikia duomenų, įskaitant failus, suglaudinimo funkciją suspausti paketą.

Suspaudimo paketas

The suspausti paketas palaiko duomenų glaudinimą per suspausti/gzip ir kompresas/zlib paketus, be kitų funkcijų.

The gzip paketas palaiko gzip failo formato duomenų glaudinimą ir išskleidimą, įskaitant skaitymo ir rašymo operacijas, kaip nurodyta

instagram viewer
RFC 1952. Kol zlib Paketas padeda suspausti ir išskleisti duomenis zlib formatu.

Galite importuoti gzip ir zlib nuo suspausti paketą naudojant importuoti raktažodį.

importuoti (
"suspausti/gzip"// importuoti gzip

"compress/zlib"// importuoti zlib
)

Failų suspaudimas ir išglaudinimas naudojant Gzip

Gzip yra failo formatas ir programinė įranga, skirta failams glaudinti ir išskleisti. Gzip naudoja Lempel-Ziv-Markov grandinės algoritmą (LZ77) duomenims suspausti, o algoritmas dažnai naudojamas tekstiniams failams, pvz., HTML, CSS ar JavaScript failams, glaudinti.

Failų suglaudinimo procesas naudojant gzip paketas yra paprastas ir intuityvus. Turėsite atidaryti failą, sukurti gzip failą, sukurti gzip rašymo programą ir nukopijuoti originalą failo turinį į gzip rašytoją prieš praplovimo operaciją, kuri užtikrina rašymo procesą užbaigti.

Paleiskite tai bash komanda Unix sistemų darbo katalogo terminale, kad sukurtumėte teksto failo pavyzdį ir įterptumėte tekstą į failą.

// sukuria tekstinį failą.
palieskite example.txt

// sujungia eilutę į failą
echo 'Sveikas, pasauli!' > pavyzdys.txt}

Sukūrę failą ir įterpę tekstą, galite importuoti gzip, io, ir os paketai suspaudimo operacijai.

Štai kaip galite naudoti suspausti/gzip paketą tekstiniam failui suspausti.

importuoti (
"suspausti/gzip"
"io"
"os"
)

funcpagrindinis() {
// Atidarykite originalų failą
originalus failas, klaida := os. Atviras("example.txt")
jeigu klysta! = nulis {
panika(klaida)
}
atidėti originalus failas. Uždaryti()

// Sukurkite naują gzip failą
gzippedFile, err := os. Sukurti ("example.txt.gz")
jeigu klysta! = nulis {
panika(klaida)
}
atidėti gzippedFile. Uždaryti()

// Sukurkite naują gzip rašytoją
gzipWriter := gzip. NewWriter (gzippedFile)
atidėti gzipWriter. Uždaryti()

// Nukopijuokite pradinio failo turinį į gzip rašytoją
_, err = io. Kopijuoti (gzipWriter, originalus failas)
jeigu klysta! = nulis {
panika(klaida)
}

// Išplaukite gzip rašymo programą, kad įsitikintumėte, jog visi duomenys yra įrašyti
gzipWriter. Nuplaukite ()
}

The Atviras funkcija os paketas atidaro tekstinį failą ir Uždaryti funkcija uždaro failą su a atidėti pareiškimas. The Sukurti funkcija sukuria gzip failą ir Naujasis Rašytojas funkcija gzip paketas įrašo tekstinio failo turinį į gzip failą naudodamas Kopijuoti funkcija io paketą.

The Nuplaukite metodas gzipWriter instance išplauna gzip rašytoją, kai visi duomenys yra prieinami suglaudintame faile.

Galite gauti originalų failą iš gzip failo, naudodami išskleidimo procesą. Failo išskleidimo procesas yra panašus; atidarysite failą ir sukursite gzip failų skaitytuvą, tada sukurkite naują failą, kuriame bus nesuspausti duomenys, prieš nukopijuodami turinį į naują failą.

importuoti (
"suspausti/gzip"
"io"
"os"
)

funcpagrindinis() {
// Atidarykite gzip failą
gzippedFile, err := os. Atviras("example.txt.gz")
jeigu klysta! = nulis {
panika(klaida)
}
atidėti gzippedFile. Uždaryti()

// Sukurkite naują gzip skaitytuvą
gzipReader, err := gzip. NewReader (gzippedFile)
atidėti gzipReader. Uždaryti()

// Sukurkite naują failą nesuspaustiems duomenims laikyti
nesuspaustas failas, err := os. Sukurti ("example.txt")
jeigu klysta! = nulis {
panika(klaida)
}
atidėti nesuspaustas failas. Uždaryti()

// Nukopijuokite gzip skaitytuvo turinį į naują failą
_, err = io. Kopijuoti (nesuspaustas failas, gzipReader)
jeigu klysta! = nulis {
panika(klaida)
}
}

The Atviras funkcija os paketas atidaro gzip failą ir Naujas Skaitytojas funkcija gzip paketas nuskaito suglaudintą failą. The Sukurti funkcija os paketas sukuria naują tekstinį failą. The Kopijuoti funkcija nukopijuoja turinį gzipReader prie nesuspaustas failas.

Duomenų suspaudimas ir išglaudinimas naudojant Zlib

Zlib yra duomenų glaudinimo ir išskleidimo biblioteka; biblioteka taip pat naudoja LZ77 algoritmą. Zlib yra parašytas C ir yra plačiai naudojamas kaip kitų suspaudimo bibliotekų ir programinės įrangos pagrindas. Skirtingai nei gzip, zlib yra biblioteka ir zlib neapima a Dokumento formatas. Tačiau jis dažnai naudojamas duomenims, saugomiems konteinerio formatuose, pvz., PNG arba HTTP, suspausti.

Suspaudimo su zlib procesas yra toks pat kaip ir gzip. Sukursite zlib failą, sukonfigūruosite rašytoją, atidarysite originalų failą ir nukopijuosite turinį į suglaudintą failą.

importuoti (
"compress/zlib"
"io"
"os"
)

funcpagrindinis() {
// Sukurkite naują failą "example.zlib"
failas, klaida := os. Sukurti ("example.zlib")
// Jei įvyksta klaida, panikuokite ir sustabdykite programą
jeigu klysta! = nulis {
panika(klaida)
}
// Užtikrinkite, kad failas būtų uždarytas grįžus funkcijai
atidėti failą. Uždaryti()

// Sukurkite naują zlib rašytoją su geriausiu glaudinimo lygiu
rašytojas, klysta := zlib. NewWriterLevel (failas, zlib. Geriausias suspaudimas)
// Jei įvyksta klaida, panikuokite ir sustabdykite programą
jeigu klysta! = nulis {
panika(klaida)
}
// Įsitikinkite, kad grįžus funkcijai rašytojas uždarytas
atidėti rašytojas. Uždaryti()

// Atidarykite įvesties failą „example.txt“
inputFile, err := os. Atviras("example.txt")
// Jei įvyksta klaida, panikuokite ir sustabdykite programą
jeigu klysta! = nulis {
panika(klaida)
}
// Užtikrinkite, kad įvesties failas būtų uždarytas grįžus funkcijai
atidėti įvesties failas. Uždaryti()

// Nukopijuokite įvesties failo turinį į rašytoją
io. Kopijuoti (rašytojas, įvesties failas)
}

The Sukurti metodas sukuria zlib failą ir NewWriterLevel funkcija sukuria failo rašytoją su nurodyta parinktimi (šiuo atveju Geriausias suspaudimas variantas). The Atviras metodas os paketas atidaro tekstinį failą ir Kopijuoti funkcija io paketas glaudinimo procese nukopijuoja tekstinio failo turinį į zlib failą.

Norėdami išskleisti zlib failą, turėsite atidaryti suglaudintą failą, sukurti naują zlib skaitytuvą ir galiausiai nukopijuoti skaitytuvo turinį į standartinę išvestį.

importuoti (
"compress/zlib"
"io"
"os"
)

funcpagrindinis() {
// Atidarykite suspaustą failą "compressed_file.zlib"
failas, klaida := os. Atviras("compressed_file.zlib")
// Jei įvyksta klaida, panikuokite ir sustabdykite programą
jeigu klysta! = nulis {
panika(klaida)
}
// Užtikrinkite, kad failas būtų uždarytas grįžus funkcijai
atidėti failą. Uždaryti()

// Sukurkite naują zlib skaitytuvą suglaudintam failui
skaitytojas, klaida := zlib. NewReader (failas)
// Jei įvyksta klaida, panikuokite ir sustabdykite programą
jeigu klysta! = nulis {
panika(klaida)
}
// Įsitikinkite, kad skaitytuvas uždarytas grįžus funkcijai
atidėti skaitytojas. Uždaryti()

// Nukopijuokite skaitytuvo turinį į standartinę išvestį
io. Kopijuoti (os. Stdout, skaitytojau)
}

Pagrindinė funkcija atidaro zlib failą su os paketai Atviras funkcija ir Naujas Skaitytojas funkcija zlib paketas nuskaito zlib failą į skaitytuvo egzempliorių. The Kopijuoti metodas io paketas nukopijuoja turinį iš skaitytuvo į standartinę išvestį (šiuo atveju į konsolę).

Failų glaudinimo kodo rašymas yra patogus automatizuojant užduotis ir suglaudinant kelis failus. Jei reikia suspausti tik kelis failus, galite naudoti tokias programas kaip WinRar, WinZip, Express Zip ir Bandizip.