Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Algoritme Gzip dan Zlib populer digunakan untuk mengompres dan mendekompresi file. Gzip terutama digunakan untuk mengompresi file tunggal, sedangkan Zlib terutama mengompresi aliran data. Algoritme menggunakan Algoritma Kompresi Deflate untuk kompresi, meskipun Gzip menyediakan fitur tambahan termasuk pemeriksaan kesalahan dan metadata file.

Gzip telah memberikan rasio kompresi yang lebih baik daripada Zlib. Namun, Gzip membutuhkan lebih banyak daya pemrosesan untuk mengompres dan mendekompresi data. Dalam kebanyakan kasus, Anda harus menggunakan Gzip untuk mengompresi file dan Zlib untuk mengompresi aliran data.

Go menyediakan fungsionalitas untuk mengompresi data, termasuk file melalui kompres kemasan.

Paket Kompres

Itu kompres paket mendukung mengompresi data melalui kompres/gzip Dan kompres/zlib paket, di antara fungsi lainnya.

Itu gzip paket mendukung kompresi dan dekompresi data format file gzip, termasuk operasi baca dan tulis sebagaimana ditentukan dalam RFC 1952. Selagi zlib package membantu mengompresi dan mendekompresi data dalam format zlib.

Anda dapat mengimpor gzip Dan zlib dari kompres paket menggunakan impor kata kunci.

impor (
"kompres/gzip"// impor gzip

"kompres/zlib"// impor zlib
)

Mengompresi dan Mendekompresi File Dengan Gzip

Gzip adalah format file dan aplikasi perangkat lunak untuk kompresi dan dekompresi file. Gzip menggunakan algoritme rantai Lempel-Ziv-Markov (LZ77) untuk mengompresi data, dan algoritme ini sering digunakan untuk mengompresi file teks, seperti file HTML, CSS, atau JavaScript.

Proses kompres file dengan gzip paket sederhana dan intuitif. Anda harus membuka file, membuat file yang di-gzip, membuat penulis gzip, dan menyalin yang asli isi file ke penulis gzip sebelum operasi flush yang memastikan proses penulisan menyelesaikan.

Jalankan ini perintah bash di terminal direktori kerja Anda pada sistem Unix untuk membuat file teks sampel dan kemudian memasukkan teks ke dalam file.

// membuat file teks.
sentuh contoh.txt

// menyalurkan string ke file
gema 'Halo, dunia!' > contoh.txt}

Setelah membuat file dan menyisipkan teks, Anda dapat mengimpor file gzip, io, Dan os paket untuk operasi kompresi.

Inilah cara Anda dapat menggunakan kompres/gzip paket untuk mengompres file teks.

impor (
"kompres/gzip"
"aku"
"os"
)

fungsiutama() {
// Buka file asli
file asli, err := os. Membuka("contoh.txt")
jika salah!= nol {
panik(berbuat salah)
}
menunda file asli. Menutup()

// Buat file gzip baru
gzipFile, err := os. Membuat("contoh.txt.gz")
jika salah!= nol {
panik(berbuat salah)
}
menunda gzipFile. Menutup()

// Buat penulis gzip baru
gzipWriter := gzip. Penulis Baru (File gzip)
menunda gzipWriter. Menutup()

// Salin isi file asli ke penulis gzip
_, salah = io. Salin (gzipWriter, File asli)
jika salah!= nol {
panik(berbuat salah)
}

// Siram penulis gzip untuk memastikan semua data ditulis
gzipWriter. Menyiram()
}

Itu Membuka fungsi dari os paket membuka file teks, dan Menutup fungsi menutup file dengan a menunda penyataan. Itu Membuat fungsi membuat file gzip, dan Penulis Baru fungsi dari gzip package menulis konten file teks ke file gzip menggunakan Menyalin fungsi dari io kemasan.

Itu Menyiram metode dari gzipWriter instance menyiram penulis gzip setelah semua data tersedia di file zip.

Anda dapat mengambil file asli dari file yang di-gzip melalui proses dekompresi. Proses dekompresi file serupa; Anda akan membuka file dan membuat pembaca file gzip, lalu membuat file baru untuk menyimpan data yang tidak terkompresi sebelum menyalin konten ke file baru.

impor (
"kompres/gzip"
"aku"
"os"
)

fungsiutama() {
// Buka file yang di-gzip
gzipFile, err := os. Membuka("contoh.txt.gz")
jika salah!= nol {
panik(berbuat salah)
}
menunda gzipFile. Menutup()

// Buat pembaca gzip baru
gzipReader, err := gzip. Pembaca Baru (File gzip)
menunda gzipReader. Menutup()

// Buat file baru untuk menampung data yang tidak dikompresi
uncompressedFile, err := os. Membuat("contoh.txt")
jika salah!= nol {
panik(berbuat salah)
}
menunda File tidak terkompresi. Menutup()

// Salin konten pembaca gzip ke file baru
_, salah = io. Salin (File tidak terkompresi, gzipReader)
jika salah!= nol {
panik(berbuat salah)
}
}

Itu Membuka fungsi dari os paket membuka file gzip, dan Pembaca Baru fungsi dari gzip paket membaca file zip. Itu Membuat fungsi dari os package membuat file teks baru. Itu Menyalin fungsi menyalin isi dari gzipReader ke File tidak terkompresi.

Mengompresi dan Mengurai Data Dengan Zlib

Zlib adalah pustaka untuk kompresi dan dekompresi data; perpustakaan juga menggunakan algoritma LZ77. Zlib ditulis dalam C dan banyak digunakan sebagai dasar untuk pustaka dan perangkat lunak kompresi lainnya. Tidak seperti gzip, zlib adalah perpustakaan, dan zlib tidak termasuk a format file. Namun, ini sering digunakan untuk mengompres data yang disimpan dalam format wadah, seperti PNG atau HTTP.

Proses mengompresi dengan zlib sama dengan gzip. Anda akan membuat file zlib, mengonfigurasi penulis, membuka file asli, dan menyalin konten ke file terkompresi.

impor (
"kompres/zlib"
"aku"
"os"
)

fungsiutama() {
// Buat file baru "contoh.zlib"
file, err := os. Membuat("contoh.zlib")
// Jika terjadi kesalahan, panik dan hentikan program
jika salah!= nol {
panik(berbuat salah)
}
// Pastikan file ditutup setelah fungsi dikembalikan
menunda mengajukan. Menutup()

// Buat penulis zlib baru dengan tingkat kompresi terbaik
penulis, err := zlib. NewWriterLevel (file, zlib. Kompresi Terbaik)
// Jika terjadi kesalahan, panik dan hentikan program
jika salah!= nol {
panik(berbuat salah)
}
// Pastikan penulis ditutup setelah fungsi kembali
menunda penulis. Menutup()

// Buka file input "contoh.txt"
inputFile, err := os. Membuka("contoh.txt")
// Jika terjadi kesalahan, panik dan hentikan program
jika salah!= nol {
panik(berbuat salah)
}
// Pastikan file input ditutup setelah fungsi dikembalikan
menunda masukanFile. Menutup()

// Salin isi file input ke penulis
io. Salin (penulis, inputFile)
}

Itu Membuat metode membuat file zlib, dan Level Penulis Baru fungsi membuat penulis untuk file dengan opsi yang ditentukan (dalam hal ini, file Kompresi Terbaik pilihan). Itu Membuka metode dari os paket membuka file teks, dan Menyalin fungsi dari io package menyalin konten file teks ke file zlib dalam proses kompresi.

Untuk mendekompres file zlib, Anda harus membuka file terkompresi, membuat pembaca zlib baru, dan akhirnya menyalin konten pembaca ke output standar.

impor (
"kompres/zlib"
"aku"
"os"
)

fungsiutama() {
// Buka file terkompresi "compressed_file.zlib"
file, err := os. Membuka("file_terkompresi.zlib")
// Jika terjadi kesalahan, panik dan hentikan program
jika salah!= nol {
panik(berbuat salah)
}
// Pastikan file ditutup setelah fungsi dikembalikan
menunda mengajukan. Menutup()

// Buat pembaca zlib baru untuk file terkompresi
pembaca, err := zlib. Pembaca Baru (file)
// Jika terjadi kesalahan, panik dan hentikan program
jika salah!= nol {
panik(berbuat salah)
}
// Pastikan pembaca ditutup setelah fungsi dikembalikan
menunda pembaca. Menutup()

// Salin isi pembaca ke keluaran standar
io. Salin (mis. Stdout, pembaca)
}

Fungsi utama membuka file zlib dengan os paket Membuka fungsi, dan Pembaca Baru fungsi dari zlib package membaca file zlib menjadi instance pembaca. Itu Menyalin metode dari io package menyalin konten dari pembaca ke keluaran standar (dalam hal ini, konsol).

Menulis kode untuk kompresi file berguna untuk mengotomatiskan tugas dan mengompresi beberapa file. Jika Anda hanya perlu mengompres beberapa file, Anda dapat menggunakan aplikasi seperti WinRar, WinZip, Express Zip, dan Bandizip.