Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Algoritmy Gzip a Zlib se běžně používají ke kompresi a dekompresi souborů. Gzip se primárně používá pro kompresi jednotlivých souborů, zatímco Zlib komprimuje hlavně datové toky. Algoritmy používají ke kompresi algoritmus Deflate Compression Algorithm, ačkoli Gzip poskytuje další funkce včetně kontroly chyb a metadat souborů.

Gzip poskytuje lepší kompresní poměry než Zlib. Gzip však vyžaduje větší výpočetní výkon pro kompresi a dekompresi dat. Ve většině případů byste měli použít Gzip pro kompresi souborů a Zlib pro kompresi datových toků.

Go poskytuje funkce pro kompresi dat, včetně souborů přes komprimovat balík.

Kompresní balíček

The komprimovat balíček podporuje kompresi dat přes komprimovat/gzip a komprimovat/zlib balíčky, mimo jiné funkce.

The gzip balíček podporuje kompresi a dekompresi dat ve formátu souboru gzip, včetně operací čtení a zápisu, jak je uvedeno v

RFC 1952. Zatímco zlib balíček pomáhá s komprimací a dekompresí dat ve formátu zlib.

Můžete importovat gzip a zlib z komprimovat balíček pomocí import klíčové slovo.

import (
"compress/gzip"// import gzip

"compress/zlib"// import zlib
)

Komprese a dekomprese souborů pomocí Gzip

Gzip je formát souborů a softwarová aplikace pro kompresi a dekompresi souborů. Gzip používá ke kompresi dat řetězový algoritmus Lempel-Ziv-Markov (LZ77) a tento algoritmus se často používá pro kompresi textových souborů, jako jsou soubory HTML, CSS nebo JavaScript.

Proces komprese souborů pomocí gzip Balíček je jednoduchý a intuitivní. Budete muset soubor otevřít, vytvořit soubor gzip, vytvořit zapisovač gzip a zkopírovat originál obsah souboru do zapisovače gzip před operací zarovnání, která zajistí, že proces zápisu proběhne kompletní.

Spusťte toto příkaz bash v terminálu vašeho pracovního adresáře na unixových systémech vytvořte vzorový textový soubor a poté do souboru vložte text.

// vytvoří textový soubor.
klepněte na example.txt

// převede řetězec do souboru
echo 'Ahoj světe!' > example.txt}

Po vytvoření souboru a vložení textu můžete importovat gzip, io, a os balíčky pro operaci komprese.

Zde je návod, jak můžete použít komprimovat/gzip balíček pro kompresi textového souboru.

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

funchlavní() {
// Otevřete původní soubor
původní soubor, err := os. OTEVŘENO("example.txt")
-li chyba!= nula {
panika(chybovat)
}
odložit původní soubor. Zavřít()

// Vytvořte nový soubor gzip
gzippedFile, err := os. Vytvořit("example.txt.gz")
-li chyba!= nula {
panika(chybovat)
}
odložit gzippedFile. Zavřít()

// Vytvořte nový zapisovač gzip
gzipWriter := gzip. NewWriter (gzippedFile)
odložit gzipWriter. Zavřít()

// Zkopírujte obsah původního souboru do zapisovače gzip
_, err = io. Kopírovat (gzipWriter, původní soubor)
-li chyba!= nula {
panika(chybovat)
}

// Vyprázdnění zapisovače gzip, aby se zajistilo, že budou zapsána všechna data
gzipWriter. Flush()
}

The OTEVŘENO funkce os balíček otevře textový soubor a soubor Zavřít funkce zavře soubor s a odložit prohlášení. The Vytvořit funkce vytvoří soubor gzip a NewWriter funkce gzip balíček zapíše obsah textového souboru do souboru gzip pomocí kopírovat funkce io balík.

The Spláchnout metoda gzipWriter instance vyprázdní zapisovač gzip, jakmile budou v zazipovaném souboru dostupná všechna data.

Původní soubor můžete načíst ze souboru gzip pomocí procesu dekomprese. Proces dekomprimace souboru je podobný; otevřete soubor a vytvoříte čtečku souborů gzip, poté vytvoříte nový soubor, ve kterém budou uložena nekomprimovaná data, než zkopírujete obsah do nového souboru.

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

funchlavní() {
// Otevřete soubor gzip
gzippedFile, err := os. OTEVŘENO("example.txt.gz")
-li chyba!= nula {
panika(chybovat)
}
odložit gzippedFile. Zavřít()

// Vytvořte novou čtečku gzip
gzipReader, chyba := gzip. NewReader (gzippedFile)
odložit gzipReader. Zavřít()

// Vytvořte nový soubor pro uložení nekomprimovaných dat
uncompressedFile, err := os. Vytvořit("example.txt")
-li chyba!= nula {
panika(chybovat)
}
odložit nekomprimovaný soubor. Zavřít()

// Zkopírujte obsah čtečky gzip do nového souboru
_, err = io. Kopírovat (uncompressedFile, gzipReader)
-li chyba!= nula {
panika(chybovat)
}
}

The OTEVŘENO funkce os balíček otevře soubor gzip a soubor NewReader funkce gzip balíček přečte zazipovaný soubor. The Vytvořit funkce os balíček vytvoří nový textový soubor. The kopírovat funkce zkopíruje obsah gzipReader k nekomprimovaný soubor.

Komprese a dekomprese dat pomocí Zlib

Zlib je knihovna pro kompresi a dekompresi dat; knihovna také používá algoritmus LZ77. Zlib je napsán v C a je široce používán jako základ pro další kompresní knihovny a software. Na rozdíl od gzip, zlib je knihovna a zlib nezahrnuje a formát souboru. Často se však používá ke kompresi dat uložených ve formátech kontejnerů, jako je PNG nebo HTTP.

Proces komprimace pomocí zlib je stejný jako u gzip. Vytvoříte soubor zlib, nakonfigurujete zapisovač, otevřete původní soubor a zkopírujete obsah do komprimovaného souboru.

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

funchlavní() {
// Vytvořte nový soubor "example.zlib"
soubor, chyba := os. Vytvořit("example.zlib")
// Pokud dojde k chybě, zpanikařte a zastavte program
-li chyba!= nula {
panika(chybovat)
}
// Ujistěte se, že po návratu funkce je soubor uzavřen
odložit soubor. Zavřít()

// Vytvořte nový zapisovač zlib s nejlepší úrovní komprese
spisovatel, mýlka := zlib. NewWriterLevel (soubor, zlib. Nejlepší komprese)
// Pokud dojde k chybě, zpanikařte a zastavte program
-li chyba!= nula {
panika(chybovat)
}
// Ujistěte se, že zapisovač je po návratu funkce uzavřen
odložit spisovatel. Zavřít()

// Otevřete vstupní soubor "example.txt"
inputFile, err := os. OTEVŘENO("example.txt")
// Pokud dojde k chybě, zpanikařte a zastavte program
-li chyba!= nula {
panika(chybovat)
}
// Ujistěte se, že vstupní soubor je po návratu funkce uzavřen
odložit vložte soubor. Zavřít()

// Zkopírujte obsah vstupního souboru do zapisovače
io. Kopírovat (zapisovač, inputFile)
}

The Vytvořit metoda vytvoří soubor zlib a NewWriterLevel funkce vytvoří zapisovač pro soubor se zadanou možností (v tomto případě Nejlepší komprese volba). The OTEVŘENO metoda os balíček otevře textový soubor a soubor kopírovat funkce io package zkopíruje obsah textového souboru do souboru zlib v procesu komprese.

Chcete-li dekomprimovat soubor zlib, budete muset otevřít komprimovaný soubor, vytvořit novou čtečku zlib a nakonec zkopírovat obsah čtečky na standardní výstup.

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

funchlavní() {
// Otevřete komprimovaný soubor "compressed_file.zlib"
soubor, chyba := os. OTEVŘENO("komprimovaný_soubor.zlib")
// Pokud dojde k chybě, zpanikařte a zastavte program
-li chyba!= nula {
panika(chybovat)
}
// Ujistěte se, že po návratu funkce je soubor uzavřen
odložit soubor. Zavřít()

// Vytvořte novou čtečku zlib pro komprimovaný soubor
čtenář, chyba := zlib. NewReader (soubor)
// Pokud dojde k chybě, zpanikařte a zastavte program
-li chyba!= nula {
panika(chybovat)
}
// Ujistěte se, že je čtečka po návratu funkce zavřená
odložit čtenář. Zavřít()

// Zkopírujte obsah čtečky na standardní výstup
io. Kopírovat (os. Stdout, čtenář)
}

Hlavní funkce otevře soubor zlib s příponou os balíček OTEVŘENO funkce a NewReader funkce zlib balíček načte soubor zlib do instance čtečky. The kopírovat metoda io balíček zkopíruje obsah ze čtečky na standardní výstup (v tomto případě konzole).

Psaní kódu pro kompresi souborů je užitečné pro automatizaci úloh a kompresi několika souborů. Pokud potřebujete komprimovat pouze několik souborů, můžete se uchýlit k použití aplikací jako WinRar, WinZip, Express Zip a Bandizip.