Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Gzip un Zlib algoritmi tiek plaši izmantoti failu saspiešanai un atspiešanai. Gzip galvenokārt izmanto atsevišķu failu saspiešanai, savukārt Zlib galvenokārt saspiež datu straumes. Algoritmi saspiešanai izmanto saspiešanas algoritmu Deflate Compression, lai gan Gzip nodrošina papildu funkcijas, tostarp kļūdu pārbaudi un failu metadatus.

Gzip ir nodrošinājis labākus saspiešanas koeficientus nekā Zlib. Tomēr Gzip datu saspiešanai un atspiešanai ir nepieciešama lielāka apstrādes jauda. Vairumā gadījumu ir jāizmanto Gzip failu saspiešanai un Zlib datu straumju saspiešanai.

Go nodrošina datu, tostarp failu, saspiešanas funkcionalitāti, izmantojot saspiest iepakojums.

Saspiestā pakotne

The saspiest pakotne atbalsta datu saspiešanu, izmantojot saspiest/gzip un saspiest/zlib paketes, starp citām funkcijām.

The gzip pakotne atbalsta gzip faila formāta datu saspiešanu un atspiešanu, tostarp lasīšanas un rakstīšanas darbības, kā norādīts

RFC 1952. Kamēr zlib pakotne palīdz saspiest un atspiest datus zlib formātā.

Jūs varat importēt gzip un zlib no saspiest iepakojumu, izmantojot imports atslēgvārds.

imports (
"saspiest/gzip"// importēt gzip

"compress/zlib"// importēt zlib
)

Failu saspiešana un atspiešana, izmantojot Gzip

Gzip ir faila formāts un programmatūras lietojumprogramma failu saspiešanai un atspiešanai. Gzip izmanto Lempel-Ziv-Markov ķēdes algoritmu (LZ77), lai saspiestu datus, un algoritms bieži tiek izmantots teksta failu, piemēram, HTML, CSS vai JavaScript failu, saspiešanai.

Failu saspiešanas process ar gzip pakete ir vienkārša un intuitīva. Jums būs jāatver fails, jāizveido gzip fails, jāizveido gzip rakstītājs un jākopē oriģināls faila saturu gzip rakstniekam pirms skalošanas operācijas, kas nodrošina rakstīšanas procesu pabeigt.

Palaidiet šo bash komanda Unix sistēmu darba direktorija terminālī, lai izveidotu teksta faila paraugu un pēc tam failā ievietotu tekstu.

// izveido teksta failu.
pieskarieties example.txt

// ievada virkni failā
echo 'Sveika, pasaule!' > example.txt}

Pēc faila izveides un teksta ievietošanas varat importēt gzip, io, un os pakotnes saspiešanas operācijai.

Lūk, kā jūs varat izmantot saspiest/gzip pakotne teksta faila saspiešanai.

imports (
"saspiest/gzip"
"io"
"os"
)

funcgalvenais() {
// Atveriet sākotnējo failu
OriginalFile, err := os. Atvērt("example.txt")
ja kļūda! = nulle {
panika(kļūda)
}
atlikt oriģinālais fails. Aizvērt ()

// Izveidojiet jaunu gzip failu
gzippedFile, err := os. Izveidot("example.txt.gz")
ja kļūda! = nulle {
panika(kļūda)
}
atlikt gzippedFile. Aizvērt ()

// Izveidojiet jaunu gzip rakstītāju
gzipWriter := gzip. NewWriter (gzippedFile)
atlikt gzipWriter. Aizvērt ()

// Kopējiet oriģinālā faila saturu gzip rakstītājā
_, err = io. Kopēt (gzipWriter, originalFile)
ja kļūda! = nulle {
panika(kļūda)
}

// Izskalojiet gzip rakstītāju, lai nodrošinātu, ka visi dati ir ierakstīti
gzipWriter. Flush ()
}

The Atvērt funkcija os pakotne atver teksta failu un Aizvērt funkcija aizver failu ar a atlikt paziņojums, apgalvojums. The Izveidot funkcija izveido gzip failu un JaunaisRakstnieks funkcija gzip pakotne ieraksta teksta faila saturu gzip failā, izmantojot Kopēt funkcija io iepakojums.

The Flush metode gzipWriter instance izskalo gzip rakstītāju, kad zip failā ir pieejami visi dati.

Varat izgūt sākotnējo failu no gzip faila, izmantojot dekompresijas procesu. Faila atspiešanas process ir līdzīgs; jūs atvērsit failu un izveidosit gzip failu lasītāju, pēc tam izveidojiet jaunu failu, lai saglabātu nesaspiestos datus pirms satura kopēšanas jaunajā failā.

imports (
"saspiest/gzip"
"io"
"os"
)

funcgalvenais() {
// Atveriet gzip failu
gzippedFile, err := os. Atvērt("example.txt.gz")
ja kļūda! = nulle {
panika(kļūda)
}
atlikt gzippedFile. Aizvērt ()

// Izveidojiet jaunu gzip lasītāju
gzipReader, err := gzip. NewReader (gzippedFile)
atlikt gzipReader. Aizvērt ()

// Izveidojiet jaunu failu, lai saglabātu nesaspiestos datus
uncompressedFile, err := os. Izveidot("example.txt")
ja kļūda! = nulle {
panika(kļūda)
}
atlikt nesaspiests fails. Aizvērt ()

// Kopējiet gzip lasītāja saturu jaunajā failā
_, err = io. Kopēt (nesaspiests fails, gzipReader)
ja kļūda! = nulle {
panika(kļūda)
}
}

The Atvērt funkcija os pakotne atver gzip failu un NewReader funkcija gzip pakotne nolasa zip failu. The Izveidot funkcija os pakotne izveido jaunu teksta failu. The Kopēt funkcija kopē saturu gzipReader uz nesaspiests fails.

Datu saspiešana un atspiešana ar Zlib

Zlib ir datu saspiešanas un dekompresijas bibliotēka; bibliotēka izmanto arī LZ77 algoritmu. Zlib ir rakstīts C valodā un tiek plaši izmantots kā pamats citām saspiešanas bibliotēkām un programmatūrai. Atšķirībā no gzip, zlib ir bibliotēka, un zlib neietver a faila formātā. Tomēr to bieži izmanto, lai saspiestu datus, kas saglabāti konteineru formātos, piemēram, PNG vai HTTP.

Saspiešanas process ar zlib ir tāds pats kā gzip. Jūs izveidosit zlib failu, konfigurēsit rakstītāju, atveriet oriģinālo failu un kopēsit saturu saspiestajā failā.

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

funcgalvenais() {
// Izveidojiet jaunu failu "example.zlib"
fails, kļūda := os. Izveidot("example.zlib")
// Ja rodas kļūda, krītiet panikā un apturiet programmu
ja kļūda! = nulle {
panika(kļūda)
}
// Pārliecinieties, vai fails ir aizvērts pēc funkcijas atgriešanās
atlikt failu. Aizvērt ()

// Izveidojiet jaunu zlib rakstītāju ar vislabāko saspiešanas līmeni
rakstnieks, err := zlib. NewWriterLevel (fails, zlib. Labākā kompresija)
// Ja rodas kļūda, krītiet panikā un apturiet programmu
ja kļūda! = nulle {
panika(kļūda)
}
// Pārliecinieties, ka pēc funkcijas atgriešanās rakstītājs ir aizvērts
atlikt rakstnieks. Aizvērt ()

// Atveriet ievades failu "example.txt"
inputFile, err := os. Atvērt("example.txt")
// Ja rodas kļūda, krītiet panikā un apturiet programmu
ja kļūda! = nulle {
panika(kļūda)
}
// Pārliecinieties, ka pēc funkcijas atgriešanās ievades fails ir aizvērts
atlikt ievades fails. Aizvērt ()

// Kopējiet ievades faila saturu rakstītājam
io. Kopēt (rakstītājs, ievades fails)
}

The Izveidot metode izveido zlib failu un NewWriterLevel funkcija izveido failam rakstītāju ar norādīto opciju (šajā gadījumā Labākā kompresija variants). The Atvērt metode os pakotne atver teksta failu un Kopēt funkcija io pakotne saspiešanas procesā kopē teksta faila saturu zlib failā.

Lai atspiestu zlib failu, jums ir jāatver saspiestais fails, jāizveido jauns zlib lasītājs un pēc tam jākopē lasītāja saturs standarta izvadē.

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

funcgalvenais() {
// Atveriet saspiesto failu "compressed_file.zlib"
fails, kļūda := os. Atvērt("saspiests_fails.zlib")
// Ja rodas kļūda, krītiet panikā un apturiet programmu
ja kļūda! = nulle {
panika(kļūda)
}
// Pārliecinieties, vai fails ir aizvērts pēc funkcijas atgriešanās
atlikt failu. Aizvērt ()

// Izveidojiet jaunu zlib lasītāju saspiestajam failam
lasītājs, err := zlib. NewReader (fails)
// Ja rodas kļūda, krītiet panikā un apturiet programmu
ja kļūda! = nulle {
panika(kļūda)
}
// Nodrošiniet, lai lasītājs būtu aizvērts pēc funkcijas atgriešanās
atlikt lasītājs. Aizvērt ()

// Kopējiet lasītāja saturu standarta izvadē
io. Kopēt (os. Stdout, lasītāj)
}

Galvenā funkcija atver zlib failu ar os iepakojums Atvērt funkcija un NewReader funkcija zlib pakotne nolasa zlib failu lasītāja instancē. The Kopēt metode io pakotne kopē saturu no lasītāja uz standarta izvadi (šajā gadījumā konsoli).

Failu saspiešanas koda rakstīšana ir ērta uzdevumu automatizēšanai un vairāku failu saspiešanai. Ja jums ir jāsaspiež tikai daži faili, varat izmantot tādas lietojumprogrammas kā WinRar, WinZip, Express Zip un Bandizip.