Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

A Gzip és Zlib algoritmusok népszerűek a fájlok tömörítésére és kicsomagolására. A Gzip elsősorban egyedi fájlok tömörítésére szolgál, míg a Zlib elsősorban adatfolyamokat tömörít. Az algoritmusok a Deflate Compression Algorithm-ot használják a tömörítéshez, bár a Gzip további funkciókat is biztosít, beleértve a hibaellenőrzést és a fájlok metaadatait.

A Gzip jobb tömörítési arányt biztosít, mint a Zlib. A Gzip azonban nagyobb feldolgozási teljesítményt igényel az adatok tömörítéséhez és kibontásához. A legtöbb esetben a fájlok tömörítésére a Gzip-et, az adatfolyamok tömörítésére pedig a Zlib-et érdemes használni.

A Go biztosítja az adatok tömörítését, beleértve a fájlokat is borogatás csomag.

A tömörítési csomag

A borogatás csomag támogatja az adatok tömörítését a tömörítés/gzip és tömörítés/zlib csomagok, egyéb funkciók mellett.

A gzip csomag támogatja a gzip fájlformátumú adatok tömörítését és kicsomagolását, beleértve az olvasási és írási műveleteket is, amint azt a

instagram viewer
RFC 1952. Amíg a zlib csomag segít az adatok tömörítésében és kicsomagolásában zlib formátumban.

Lehet importálni gzip és zlib tól borogatás csomag segítségével import kulcsszó.

import (
"tömörítés/gzip"// gzip importálása

"compress/zlib"// zlib import
)

Fájlok tömörítése és kicsomagolása Gzip segítségével

A Gzip egy fájlformátum és egy szoftveralkalmazás fájlok tömörítésére és kitömörítésére. A Gzip a Lempel-Ziv-Markov láncalgoritmust (LZ77) használja az adatok tömörítésére, és az algoritmust gyakran használják szövegfájlok, például HTML-, CSS- vagy JavaScript-fájlok tömörítésére.

A fájlok tömörítésének folyamata a gzip A csomag egyszerű és intuitív. Meg kell nyitnia a fájlt, létre kell hoznia egy gzip fájlt, létre kell hoznia egy gzip írót, és másolja az eredetit fájl tartalmát a gzip íróba az írási folyamatot biztosító ürítési művelet előtt teljes.

Futtassa ezt bash parancs Unix rendszereken a munkakönyvtár termináljában hozzon létre egy minta szövegfájlt, majd szúrjon be szöveget a fájlba.

// szöveges fájlt hoz létre.
érintse meg a example.txt fájlt

// a karakterláncot a fájlba vezeti
echo 'Szia, világ!' > example.txt}

A fájl létrehozása és a szöveg beszúrása után importálhatja a gzip, io, és os csomagok a tömörítési művelethez.

Így használhatja a tömörítés/gzip csomag egy szöveges fájl tömörítéséhez.

import (
"tömörítés/gzip"
"io"
"os"
)

funcfő-() {
// Nyissa meg az eredeti fájlt
originalFile, err := os. Nyisd ki("example.txt")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja eredeti fájl. Bezárás()

// Hozzon létre egy új gzip-fájlt
gzippedFile, err := os. Teremt("example.txt.gz")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja gzippedFile. Bezárás()

// Hozzon létre egy új gzip írót
gzipWriter := gzip. NewWriter (gzippedFile)
elhalasztja gzipWriter. Bezárás()

// Másolja át az eredeti fájl tartalmát a gzip íróba
_, err = io. Másolás (gzipWriter, eredeti fájl)
ha hiba! = nulla {
pánik(téved)
}

// Öblítse ki a gzip írót, hogy megbizonyosodjon arról, hogy minden adat meg van írva
gzipWriter. Flush()
}

A Nyisd ki funkciója os csomag megnyitja a szövegfájlt, és a Bezárás függvény bezárja a fájlt a elhalasztja nyilatkozat. A Teremt függvény létrehoz egy gzip fájlt, és a NewWriter funkciója gzip csomag a szövegfájl tartalmát a gzip fájlba írja a Másolat funkciója io csomag.

A Öblítés módszere a gzipWriter Az instance kiüríti a gzip írót, amint az összes adat elérhető a tömörített fájlban.

Az eredeti fájlt visszakeresheti egy gzip-fájlból kicsomagolási eljárással. A fájl kitömörítésének folyamata hasonló; megnyitja a fájlt és létrehoz egy gzip fájlolvasót, majd hozzon létre egy új fájlt a tömörítetlen adatok tárolására, mielőtt a tartalmat az új fájlba másolja.

import (
"tömörítés/gzip"
"io"
"os"
)

funcfő-() {
// Nyissa meg a gzip-fájlt
gzippedFile, err := os. Nyisd ki("example.txt.gz")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja gzippedFile. Bezárás()

// Hozzon létre egy új gzip olvasót
gzipReader, err := gzip. NewReader (gzippedFile)
elhalasztja gzipReader. Bezárás()

// Hozzon létre egy új fájlt a tömörítetlen adatok tárolására
uncompressedFile, err := os. Teremt("example.txt")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja tömörítetlen fájl. Bezárás()

// Másolja a gzip olvasó tartalmát az új fájlba
_, err = io. Másolás (tömörítetlen fájl, gzipReader)
ha hiba! = nulla {
pánik(téved)
}
}

A Nyisd ki funkciója os csomag megnyitja a gzip-fájlt, és a NewReader funkciója gzip csomag beolvassa a tömörített fájlt. A Teremt funkciója os csomag új szövegfájlt hoz létre. A Másolat funkció másolja a tartalmát gzipReader hoz tömörítetlen fájl.

Adatok tömörítése és kicsomagolása a Zlib segítségével

A Zlib egy adattömörítési és -kicsomagolási könyvtár; a könyvtár is az LZ77 algoritmust használja. A Zlib C nyelven íródott, és széles körben használják más tömörítési könyvtárak és szoftverek alapjaként. nem úgy mint gzip, zlib egy könyvtár, és zlib nem tartalmazza a fájlformátum. Gyakran használják azonban a konténerformátumokban, például PNG vagy HTTP-ben tárolt adatok tömörítésére.

A zlib-el történő tömörítés folyamata ugyanaz, mint a gzip esetében. Létrehoz egy zlib fájlt, konfigurál egy írót, nyissa meg az eredeti fájlt, és másolja a tartalmát a tömörített fájlba.

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

funcfő-() {
// Hozzon létre egy új fájlt "example.zlib"
fájl, err := os. Teremt("example.zlib")
// Ha hiba történik, pánikoljon, és állítsa le a programot
ha hiba! = nulla {
pánik(téved)
}
// Győződjön meg arról, hogy a fájl be van zárva a függvény visszatérése után
elhalasztja fájlt. Bezárás()

// Hozzon létre egy új zlib írót a legjobb tömörítési szinttel
író, err := zlib. NewWriterLevel (fájl, zlib. legjobb tömörítés)
// Ha hiba történik, pánikoljon, és állítsa le a programot
ha hiba! = nulla {
pánik(téved)
}
// Győződjön meg arról, hogy az író be van zárva a függvény visszatérése után
elhalasztja író. Bezárás()

// Nyissa meg az "example.txt" bemeneti fájlt
inputFile, err := os. Nyisd ki("example.txt")
// Ha hiba történik, pánikoljon, és állítsa le a programot
ha hiba! = nulla {
pánik(téved)
}
// Győződjön meg arról, hogy a bemeneti fájl be van zárva a függvény visszatérése után
elhalasztja inputFile. Bezárás()

// Másolja a bemeneti fájl tartalmát az íróba
io. Másolás (író, bemeneti fájl)
}

A Teremt metódus létrehozza a zlib fájlt, és a NewWriterLevel függvény létrehoz egy írót a fájlhoz a megadott opcióval (ebben az esetben a A legjobb tömörítés választási lehetőség). A Nyisd ki módszere a os csomag megnyitja a szövegfájlt, és a Másolat funkciója io csomag átmásolja a szöveges fájl tartalmát a zlib fájlba a tömörítési folyamat során.

A zlib fájl kibontásához meg kell nyitnia a tömörített fájlt, létre kell hoznia egy új zlib-olvasót, majd végül át kell másolnia az olvasó tartalmát a szabványos kimenetre.

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

funcfő-() {
// Nyissa meg a "compressed_file.zlib" tömörített fájlt
fájl, err := os. Nyisd ki("tömörített_fájl.zlib")
// Ha hiba történik, pánikoljon, és állítsa le a programot
ha hiba! = nulla {
pánik(téved)
}
// Győződjön meg arról, hogy a fájl be van zárva a függvény visszatérése után
elhalasztja fájlt. Bezárás()

// Hozzon létre egy új zlib olvasót a tömörített fájlhoz
olvasó, err := zlib. NewReader (fájl)
// Ha hiba történik, pánikoljon, és állítsa le a programot
ha hiba! = nulla {
pánik(téved)
}
// Győződjön meg arról, hogy az olvasó be van zárva a függvény visszatérése után
elhalasztja olvasó. Bezárás()

// Másolja az olvasó tartalmát a szabványos kimenetre
io. Másolás (os. Stdout, olvasó)
}

A fő funkció megnyitja a zlib fájlt a os csomagok Nyisd ki funkciót, és a NewReader funkciója zlib csomag beolvassa a zlib fájlt egy olvasópéldányba. A Másolat módszere a io csomag átmásolja a tartalmat az olvasóból a szabványos kimenetre (jelen esetben a konzolra).

A fájltömörítéshez szükséges kód írása praktikus a feladatok automatizálásához és több fájl tömörítéséhez. Ha csak néhány fájlt kell tömörítenie, használhat olyan alkalmazásokat, mint a WinRar, WinZip, Express Zip és Bandizip.