Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Algoritmy Gzip a Zlib sa bežne používajú na kompresiu a dekompresiu súborov. Gzip sa primárne používa na kompresiu jednotlivých súborov, zatiaľ čo Zlib komprimuje hlavne dátové toky. Algoritmy používajú na kompresiu algoritmus Deflate Compression Algorithm, hoci Gzip poskytuje ďalšie funkcie vrátane kontroly chýb a metadát súboru.

Gzip poskytuje lepšie kompresné pomery ako Zlib. Gzip však vyžaduje väčší výpočtový výkon na kompresiu a dekompresiu údajov. Vo väčšine prípadov by ste mali použiť Gzip na kompresiu súborov a Zlib na kompresiu dátových tokov.

Go poskytuje funkcie na kompresiu údajov vrátane súborov cez komprimovať balík.

Kompresný balík

The komprimovať balík podporuje kompresiu dát cez komprimovať/gzip a komprimovať/zlib balíky, okrem iných funkcií.

The gzip balík podporuje kompresiu a dekompresiu údajov vo formáte súboru gzip, vrátane operácií čítania a zápisu, ako je uvedené v

instagram viewer
RFC 1952. Kým zlib balík pomáha s kompresiou a dekompresiou údajov vo formáte zlib.

Môžete importovať gzip a zlib z komprimovať balík pomocou importovať kľúčové slovo.

importovať (
"compress/gzip"// import gzip

"compress/zlib"// import zlib
)

Kompresia a dekompresia súborov pomocou Gzip

Gzip je formát súboru a softvérová aplikácia na kompresiu a dekompresiu súborov. Gzip používa na kompresiu údajov reťazový algoritmus Lempel-Ziv-Markov (LZ77) a tento algoritmus sa často používa na kompresiu textových súborov, ako sú súbory HTML, CSS alebo JavaScript.

Proces kompresie súborov pomocou gzip balík je jednoduchý a intuitívny. Budete musieť otvoriť súbor, vytvoriť súbor gzip, vytvoriť zapisovač gzip a skopírovať originál obsah súboru do zapisovača gzip pred operáciou vyprázdnenia, ktorá zaisťuje proces zápisu kompletný.

Spustite toto bash príkaz v termináli vášho pracovného adresára na systémoch Unix vytvorte vzorový textový súbor a potom do súboru vložte text.

// vytvorí textový súbor.
dotknite sa súboru example.txt

// prenesie reťazec do súboru
echo 'Ahoj, svet!' > example.txt}

Po vytvorení súboru a vložení textu môžete importovať súbor gzip, io, a os balíky pre operáciu kompresie.

Tu je návod, ako môžete použiť komprimovať/gzip balík na kompresiu textového súboru.

importovať (
"compress/gzip"
"io"
"os"
)

funcHlavná() {
// Otvorte pôvodný súbor
pôvodnýSúbor, chyba := os. OTVORENÉ("example.txt")
ak chyba!= nula {
panika(chyba)
}
odložiť pôvodnýSúbor. Zavrieť()

// Vytvorte nový súbor gzip
gzippedFile, chyba := os. Vytvoriť("example.txt.gz")
ak chyba!= nula {
panika(chyba)
}
odložiť gzippedFile. Zavrieť()

// Vytvorte nový zapisovač gzip
gzipWriter := gzip. NewWriter (gzippedFile)
odložiť gzipWriter. Zavrieť()

// Skopírujte obsah pôvodného súboru do zapisovača gzip
_, chyba = io. Kopírovať (gzipWriter, originalFile)
ak chyba!= nula {
panika(chyba)
}

// Vyprázdnite zapisovač gzip, aby ste sa uistili, že sú zapísané všetky údaje
gzipWriter. Spláchnuť()
}

The OTVORENÉ funkciu os balík otvorí textový súbor a súbor Zavrieť funkcia zatvorí súbor s a odložiť vyhlásenie. The Vytvorte funkcia vytvorí súbor gzip a NewWriter funkciu gzip balík zapíše obsah textového súboru do súboru gzip pomocou Kopírovať funkciu io balík.

The Spláchnuť metóda gzipWriter inštancia vyprázdni zapisovač gzip, keď sú všetky údaje dostupné v zazipovanom súbore.

Pôvodný súbor môžete získať zo súboru gzip pomocou procesu dekompresie. Proces dekompresie súboru je podobný; otvoríte súbor a vytvoríte čítačku súborov gzip, potom vytvoríte nový súbor, v ktorom budú uložené nekomprimované údaje, pred skopírovaním obsahu do nového súboru.

importovať (
"compress/gzip"
"io"
"os"
)

funcHlavná() {
// Otvorte súbor gzip
gzippedFile, chyba := os. OTVORENÉ("example.txt.gz")
ak chyba!= nula {
panika(chyba)
}
odložiť gzippedFile. Zavrieť()

// Vytvorte novú čítačku gzip
gzipReader, chyba := gzip. NewReader (gzippedFile)
odložiť gzipReader. Zavrieť()

// Vytvorte nový súbor na uloženie nekomprimovaných údajov
uncompressedFile, err := os. Vytvoriť("example.txt")
ak chyba!= nula {
panika(chyba)
}
odložiť nekomprimovaný súbor. Zavrieť()

// Skopírujte obsah čítačky gzip do nového súboru
_, chyba = io. Kopírovať (uncompressedFile, gzipReader)
ak chyba!= nula {
panika(chyba)
}
}

The OTVORENÉ funkciu os balík otvorí súbor gzip a súbor NewReader funkciu gzip balík prečíta zazipovaný súbor. The Vytvorte funkciu os balík vytvorí nový textový súbor. The Kopírovať funkcia skopíruje obsah súboru gzipReader k nekomprimovaný súbor.

Kompresia a dekompresia údajov pomocou Zlib

Zlib je knižnica na kompresiu a dekompresiu údajov; knižnica tiež používa algoritmus LZ77. Zlib je napísaný v jazyku C a je široko používaný ako základ pre iné kompresné knižnice a softvér. Na rozdiel od gzip, zlib je knižnica a zlib nezahŕňa a formát súboru. Často sa však používa na kompresiu údajov uložených v kontajnerových formátoch, ako sú PNG alebo HTTP.

Proces kompresie pomocou zlib je rovnaký ako v prípade gzip. Vytvoríte súbor zlib, nakonfigurujete zapisovač, otvoríte pôvodný súbor a skopírujete obsah do komprimovaného súboru.

importovať (
"compress/zlib"
"io"
"os"
)

funcHlavná() {
// Vytvorte nový súbor "example.zlib"
súbor, chyba := os. Vytvoriť("example.zlib")
// Ak sa vyskytne chyba, panikárte a zastavte program
ak chyba!= nula {
panika(chyba)
}
// Zabezpečte, aby bol súbor po návrate funkcie zatvorený
odložiť súbor. Zavrieť()

// Vytvorte nový zapisovač zlib s najlepšou úrovňou kompresie
spisovateľ, chyba := zlib. NewWriterLevel (súbor, zlib. Najlepšia kompresia)
// Ak sa vyskytne chyba, panikárte a zastavte program
ak chyba!= nula {
panika(chyba)
}
// Zabezpečte, aby bol zapisovač po návrate funkcie zatvorený
odložiť spisovateľ. Zavrieť()

// Otvorte vstupný súbor "example.txt"
inputFile, err := os. OTVORENÉ("example.txt")
// Ak sa vyskytne chyba, panikárte a zastavte program
ak chyba!= nula {
panika(chyba)
}
// Uistite sa, že vstupný súbor je po návrate funkcie zatvorený
odložiť vstupný súbor. Zavrieť()

// Skopírujte obsah vstupného súboru do zapisovača
io. Kopírovať (zapisovač, vstupný súbor)
}

The Vytvorte metóda vytvorí súbor zlib a NewWriterLevel funkcia vytvorí zapisovač pre súbor so zadanou možnosťou (v tomto prípade Najlepšia kompresia možnosť). The OTVORENÉ metóda os balík otvorí textový súbor a súbor Kopírovať funkciu io package skopíruje obsah textového súboru do súboru zlib v procese kompresie.

Ak chcete dekomprimovať súbor zlib, budete musieť otvoriť komprimovaný súbor, vytvoriť novú čítačku zlib a nakoniec skopírovať obsah čítačky na štandardný výstup.

importovať (
"compress/zlib"
"io"
"os"
)

funcHlavná() {
// Otvorte komprimovaný súbor "compressed_file.zlib"
súbor, chyba := os. OTVORENÉ("compressed_file.zlib")
// Ak sa vyskytne chyba, panikárte a zastavte program
ak chyba!= nula {
panika(chyba)
}
// Zabezpečte, aby bol súbor po návrate funkcie zatvorený
odložiť súbor. Zavrieť()

// Vytvorte novú čítačku zlib pre komprimovaný súbor
čitateľ, chyba := zlib. NewReader (súbor)
// Ak sa vyskytne chyba, panikárte a zastavte program
ak chyba!= nula {
panika(chyba)
}
// Uistite sa, že po návrate funkcie je čítačka zatvorená
odložiť čitateľ. Zavrieť()

// Skopírujte obsah čítačky na štandardný výstup
io. Kopírovať (os. Stdout, čitateľ)
}

Hlavná funkcia otvorí súbor zlib s príponou os balíka OTVORENÉ funkcie a NewReader funkciu zlib balík načíta súbor zlib do inštancie čítačky. The Kopírovať metóda io balík skopíruje obsah z čítačky na štandardný výstup (v tomto prípade do konzoly).

Písanie kódu na kompresiu súborov je užitočné pri automatizácii úloh a kompresii niekoľkých súborov. Ak potrebujete komprimovať iba niekoľko súborov, môžete použiť aplikácie ako WinRar, WinZip, Express Zip a Bandizip.