Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Failide tihendamiseks ja lahtipakkimiseks kasutatakse laialdaselt algoritme Gzip ja Zlib. Gzipi kasutatakse peamiselt üksikute failide tihendamiseks, Zlib aga peamiselt andmevoogusid. Algoritmid kasutavad tihendamiseks tühjendamise pakkimisalgoritmi, kuigi Gzip pakub lisafunktsioone, sealhulgas veakontrolli ja faili metaandmeid.

Gzip on pakkunud paremaid tihendussuhteid kui Zlib. Kuid Gzip vajab andmete tihendamiseks ja lahtipakkimiseks rohkem töötlemisvõimsust. Enamikul juhtudel peaksite failide tihendamiseks kasutama Gzipi ja andmevoogude tihendamiseks Zlibi.

Go pakub andmete, sealhulgas failide tihendamiseks funktsiooni suruma kokku pakett.

Tihendamise pakett

The suruma kokku pakett toetab andmete tihendamist tihendada/gzip ja kompress/zlib paketid muude funktsioonide hulgas.

The gzip pakett toetab gzip-failivormingu andmete tihendamist ja lahtipakkimist, sealhulgas lugemis- ja kirjutamistoiminguid, nagu on kirjeldatud punktis

instagram viewer
RFC 1952. Samal ajal kui zlib pakett aitab zlib-vormingus andmeid tihendada ja lahti pakkida.

Saate importida gzip ja zlib alates suruma kokku pakett kasutades importida märksõna.

importida (
"tihenda/gzip"// importige gzip

"compress/zlib"// import zlib
)

Failide tihendamine ja lahtipakkimine Gzipiga

Gzip on failivorming ja tarkvararakendus failide tihendamiseks ja lahtipakkimiseks. Gzip kasutab andmete tihendamiseks Lempel-Ziv-Markovi ahelalgoritmi (LZ77) ja sageli kasutatakse seda algoritmi tekstifailide, näiteks HTML-, CSS- või JavaScript-failide tihendamiseks.

Failide tihendamise protsess rakendusega gzip pakett on lihtne ja intuitiivne. Peate faili avama, looma gzip-faili, looma gzip-kirjutaja ja kopeerima originaali faili sisu gzip-kirjutajasse enne loputustoimingut, mis tagab kirjutamisprotsessi täielik.

Käivitage see bash käsk Unixi süsteemide töökataloogi terminalis näidistekstifaili loomiseks ja seejärel teksti sisestamiseks faili.

// loob tekstifaili.
puudutage faili example.txt

// suunab stringi faili
echo 'Tere, maailm!' > näide.txt}

Pärast faili loomist ja teksti sisestamist saate importida gzip, io, ja os tihendusoperatsiooni paketid.

Siin on, kuidas saate kasutada tihendada/gzip pakett tekstifaili tihendamiseks.

importida (
"tihenda/gzip"
"io"
"os"
)

funcpeamine() {
// Avage originaalfail
originaalfail, err := os. Open("example.txt")
kui eks!= null {
paanika(viga)
}
edasi lükata originaalfail. Sulge()

// Looge uus gzipitud fail
gzippedFile, err := os. Loo("example.txt.gz")
kui eks!= null {
paanika(viga)
}
edasi lükata gzippedFile. Sulge()

// Looge uus gzip-kirjutaja
gzipWriter := gzip. NewWriter (gzippedFile)
edasi lükata gzipWriter. Sulge()

// Kopeerige algse faili sisu gzip-kirjutajasse
_, err = io. Kopeeri (gzipWriter, originaalfail)
kui eks!= null {
paanika(viga)
}

// Loputage gzip-kirjutaja, et kõik andmed oleksid kirjutatud
gzipWriter. Flush ()
}

The Avatud funktsioon os pakett avab tekstifaili ja Sulge funktsioon sulgeb faili tähega a edasi lükata avaldus. The Loo funktsioon loob gzipitud faili ja UusKirjanik funktsioon gzip pakett kirjutab tekstifaili sisu gzip-faili kasutades Kopeeri funktsioon io pakett.

The Loputada meetod gzipWriter eksemplar loputab gzip-kirjutaja, kui kõik andmed on pakitud failis saadaval.

Algfaili saate lahtipakkimisprotsessi abil laadida gzip-failist. Faili lahtipakkimise protsess on sarnane; avate faili ja loote gzip-faililugeja, seejärel loote enne sisu uude faili kopeerimist tihendamata andmete hoidmiseks uue faili.

importida (
"tihenda/gzip"
"io"
"os"
)

funcpeamine() {
// Avage gzip-fail
gzippedFile, err := os. Open("example.txt.gz")
kui eks!= null {
paanika(viga)
}
edasi lükata gzippedFile. Sulge()

// Looge uus gzip-lugeja
gzipReader, err := gzip. NewReader (gzippedFile)
edasi lükata gzipReader. Sulge()

// Looge tihendamata andmete hoidmiseks uus fail
tihendamata fail, err := os. Loo("example.txt")
kui eks!= null {
paanika(viga)
}
edasi lükata tihendamata fail. Sulge()

// Kopeerige gzip-lugeja sisu uude faili
_, err = io. Kopeeri (tihendamata fail, gzipReader)
kui eks!= null {
paanika(viga)
}
}

The Avatud funktsioon os pakett avab gzip-faili ja UusReader funktsioon gzip pakett loeb ZIP-faili. The Loo funktsioon os pakett loob uue tekstifaili. The Kopeeri funktsioon kopeerib üksuse sisu gzipReader juurde tihendamata fail.

Andmete tihendamine ja lahtipakkimine Zlibiga

Zlib on andmete tihendamise ja lahtipakkimise teek; raamatukogu kasutab ka LZ77 algoritmi. Zlib on kirjutatud C-keeles ja seda kasutatakse laialdaselt teiste tihendusteekide ja tarkvara alusena. Erinevalt gzip, zlib on raamatukogu ja zlib ei sisalda a failiformaat. Siiski kasutatakse seda sageli konteinerivormingus (nt PNG või HTTP) salvestatud andmete tihendamiseks.

Zlibiga tihendamise protsess on sama, mis gzipi puhul. Loote zlib-faili, konfigureerite kirjutaja, avate originaalfaili ja kopeerite sisu tihendatud faili.

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

funcpeamine() {
// Looge uus fail "example.zlib"
fail, err := os. Loo("example.zlib")
// Vea ilmnemisel paanitsege ja peatage programm
kui eks!= null {
paanika(viga)
}
// Veenduge, et fail suletakse pärast funktsiooni naasmist
edasi lükata faili. Sulge()

// Looge uus parima tihendustasemega zlib-kirjutaja
kirjanik, eksitus := zlib. NewWriterLevel (fail, zlib. Parim tihendus)
// Vea ilmnemisel paanitsege ja peatage programm
kui eks!= null {
paanika(viga)
}
// Veenduge, et kirjutaja suletakse pärast funktsiooni naasmist
edasi lükata kirjanik. Sulge()

// Avage sisendfail "example.txt"
inputFile, err := os. Open("example.txt")
// Vea ilmnemisel paanitsege ja peatage programm
kui eks!= null {
paanika(viga)
}
// Veenduge, et sisendfail suletakse pärast funktsiooni naasmist
edasi lükata sisendfail. Sulge()

// Kopeerige sisendfaili sisu kirjutajasse
io. Kopeeri (kirjutaja, sisendfail)
}

The Loo meetod loob zlib-faili ja UusWriterLevel funktsioon loob failile kirjutaja määratud valikuga (antud juhul Parim Compression valik). The Avatud meetod os pakett avab tekstifaili ja Kopeeri funktsioon io pakett kopeerib tihendusprotsessis tekstifaili sisu zlib-faili.

Zlib-faili lahtipakkimiseks peate avama tihendatud faili, looma uue zlib-lugeja ja seejärel kopeerima lugeja sisu standardväljundisse.

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

funcpeamine() {
// Avage tihendatud fail "compressed_file.zlib"
fail, err := os. Open("compressed_file.zlib")
// Vea ilmnemisel paanitsege ja peatage programm
kui eks!= null {
paanika(viga)
}
// Veenduge, et fail suletakse pärast funktsiooni naasmist
edasi lükata faili. Sulge()

// Looge tihendatud faili jaoks uus zlib-lugeja
lugeja, eksitus := zlib. NewReader (fail)
// Vea ilmnemisel paanitsege ja peatage programm
kui eks!= null {
paanika(viga)
}
// Veenduge, et lugeja suletakse pärast funktsiooni naasmist
edasi lükata lugeja. Sulge()

// Kopeerige lugeja sisu standardväljundisse
io. Kopeeri (os. Stdout, lugeja)
}

Põhifunktsioon avab zlib-faili koos os pakendid Avatud funktsioon ja UusReader funktsioon zlib pakett loeb zlib-faili lugeja eksemplari. The Kopeeri meetod io pakett kopeerib sisu lugejast standardväljundisse (antud juhul konsooli).

Failide tihendamiseks koodi kirjutamine on mugav ülesannete automatiseerimiseks ja mitme faili tihendamiseks. Kui teil on vaja tihendada vaid mõned failid, võite kasutada selliseid rakendusi nagu WinRar, WinZip, Express Zip ja Bandizip.