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

Arsip menggabungkan beberapa file menjadi satu format, biasanya zip, tar, atau rar. File arsip juga dapat menggunakan kompresi untuk mengurangi ukuran file total.

Anda dapat menggunakan arsip untuk mendistribusikan perangkat lunak dan data, termasuk halaman web. Anda juga dapat mengarsipkan aplikasi Anda, dengan semua file dan dependensinya, untuk diunduh dan dipasang oleh pengguna.

Paket arsip Go memungkinkan Anda membuat dan mengekstrak arsip dalam format tar dan zip.

Paket Arsip Go

Pergi menyediakan arsip paket untuk bekerja dengan berbagai format arsip. Anda dapat menggunakan ritsleting Dan ter paket untuk membuat, membaca, dan menulis file arsip dalam format tersebut. Kedua paket mendukung berbagai algoritme kompresi melalui API yang mudah digunakan.

Inilah cara Anda dapat mengimpor paket zip dan tar di file Go Anda:

impor (
"arsipkan/zip"
"arsipkan/tar"
)

Setelah mengimpor paket, Anda dapat menggunakannya untuk membuat dan memanipulasi file arsip.

Membuat dan Menambahkan File ke Arsip Tar

Itu ter paket bekerja dengan tar arsip format tar dan tar.gz, termasuk dukungan untuk membaca dan menulis file dengan header diperpanjang PAX.

Paket tar menyediakan a Penulis Baru fungsi untuk membuat arsip tar baru. NewWriter mengambil sebuah io. Penulis contoh antarmuka yang mungkin berupa file atau buffer memori dan mengembalikan pointer ke ter. Penulis struct.

kemasan utama

impor (
"arsipkan/tar"
"os"
)

fungsiutama() {
// Buat file baru
berkas, _ := os. Membuat("myarchive.tar")
menunda mengajukan. Menutup()

// Buat arsip tar baru
tarWriter := tar. Penulis Baru (file)
menunda tarWriter. Menutup()
}

Itu Membuat fungsi dari os package membuat file tar baru. Itu ter. Penulis Baru fungsi mengambil file dan membuat arsip baru.

Anda dapat menambahkan file ke arsip tar dengan WriteHeader Dan Menulis fungsi. Fungsi WriteHeader mengambil a ter. Tajuk struct sebagai argumen. Ini berisi metadata file, seperti nama file, ukuran, dan bit izin. Fungsi Tulis menulis konten file ke arsip.

impor (
"arsipkan/tar"
"fmt"
"aku"
"catatan"
"os"
)

fungsiutama() {
// Buat file baru
berkas, _ := os. Membuat("myarchive.tar")
berkas, _ = os. Membuat("pesan.txt")
menunda mengajukan. Menutup()

// Buat arsip tar baru
tarWriter := tar. Penulis Baru (file)
menunda tarWriter. Menutup()

// Tambahkan file ke arsip
fileToAdd, _ := os. Membuka("file1.txt")
menunda fileToAdd. Menutup()
fileInfo, _ := fileToAdd. Stat()
tajuk, _ := tar. FileInfoHeader (fileInfo, "")
tarWriter. WriteHeader (tajuk)
_, _ = io. Salin (tarWriter, fileToAdd)
fmt. Cetak("Operasi pengarsipan TAR selesai")
}

Program ini membuat file tar dan teks baru dengan Membuat fungsi dari os paket dan arsip tar baru dengan Penulis Baru, sebelum menambahkan file ke arsip.

Itu Membuka fungsi membuka file untuk ditambahkan ke arsip. Perhatikan bahwa Anda memerlukan file bernama file1.txt di direktori kerja Anda untuk menjalankan program ini dengan sukses.

Anda dapat menggunakan Stat fungsi instance file untuk mengambil metadata yang Anda perlukan untuk header tar. Berikan hasilnya ke FileInfoHeader, lalu teruskan hasil itu ke WriteHeader berfungsi untuk mengatur file tar. Terakhir, salin file ke arsip menggunakan io. Menyalin.

Mengekstrak File Dari Arsip Tar

Anda dapat menggunakan Pembaca Baru berfungsi untuk membaca isi file arsip tar. Fungsi NewReader menerima file io. Pembaca antarmuka yang mungkin berupa file atau buffer memori. Ini mengembalikan pointer ke a ter. Pembaca struct.

impor (
"arsipkan/tar"
"aku"
"os"
)

fungsiutama() {
// Buka arsip tar
berkas, _ := os. Membuka("myarchive.tar")
menunda mengajukan. Menutup()

// Buat pembaca tar baru
tarReader := tar. Pembaca Baru (file)

// Ulangi file dalam arsip
untuk {
tajuk, err := tarReader. Berikutnya()

jika salah == io. EOF {
merusak
}

// Ekstrak file
outFile, _ := os. Buat (header. Nama)
menunda outFile. Menutup()
_, _ = io. Salin (outFile, tarReader)
}
}

Itu tak terbatas untuk loop melintasi instance tar reader dan mengekstrak file dengan menyalin setiap file dengan io paket Menyalin fungsi.

Membuat dan Menambahkan File ke Arsip Zip

Anda dapat membuat arsip zip baru dengan Penulis Baru fungsi dari ritsleting kemasan. Fungsi NewWriter mengambil contoh file dan mengembalikan penulis zip.

impor (
"arsipkan/zip"
"os"
)

fungsiutama() {
// Buat file baru
file, err := os. Membuat("arsip.zip")

jika salah!= nol {
panik(berbuat salah)
}

menunda mengajukan. Menutup()

// Buat penulis zip baru
zipWriter := zip. Penulis Baru (file)
menunda zipWriter. Menutup()
}

Itu zipWriter variabel menyimpan yang baru Penulis contoh yang dikembalikan oleh NewWriter.

Anda dapat menambahkan file ke arsip zip Anda dengan Membuat fungsi instance Writer. Fungsi Buat mengambil nama file. Anda juga dapat menggunakan Menulis fungsi instance file zip untuk menulis data ke file dalam arsip zip.

impor (
"arsipkan/zip"
"os"
)

fungsiutama() {
// Buat file baru
file, err := os. Membuat("arsip.zip")
file, err = os. Membuat("file1.txt")
file, err = os. Membuat("file2.txt")

jika salah!= nol {
panik(berbuat salah)
}

menunda mengajukan. Menutup()

// Buat penulis zip baru
zipWriter := zip. Penulis Baru (file)
menunda zipWriter. Menutup()

// Tambahkan file ke arsip
file1, err := zipWriter. Membuat("file1.txt")

jika salah!= nol {
panik(berbuat salah)
}

file2, err := zipWriter. Membuat("file2.txt")

jika salah!= nol {
panik(berbuat salah)
}

// Tulis data ke file di arsip
file1.Tulis([]byte("Halo Dunia!"))
file2.Tulis([]byte("Selamat tinggal Dunia!"))
fmt. Cetak("operasi pengarsipan zip selesai")
}

Fungsi utama dimulai dengan menggunakan Membuat untuk membuat file zip baru dan dua file teks. Itu kemudian membuat dua Penulis untuk menambahkan dua file teks ke arsip. Itu Menulis fungsi dari setiap contoh file menulis pesan ke setiap file dalam arsip.

Mengekstrak File Dari Arsip Zip

Anda dapat mengekstrak file zip yang ada dengan membacanya dengan OpenReader fungsi, kemudian mengulangi isinya dan menyalin file dengan io kemasan.

impor (
"arsipkan/zip"
"fmt"
"aku"
"os"
)

fungsiutama() {
// Buka arsip
zipReader, err := zip. OpenReader("arsip.zip")

jika salah!= nol {
panik(berbuat salah)
}

menunda zipReader. Menutup()

// Ekstrak file dari arsip
untuk _, berkas := jangkauan zipReader. Berkas {
file zip, err := file. Membuka()

jika salah!= nol {
panik(berbuat salah)
}

menunda file zip. Menutup()

// Buat file baru dengan nama yang sama dengan file zip
file yang diekstrak, err := os. Buat (file. Nama)

jika salah!= nol {
panik(berbuat salah)
}

menunda File yang diekstrak. Menutup()

// Salin data dari file zip ke file baru
_, salah = io. Salin (ExtractedFile, zippedFile)

jika salah!= nol {
panik(berbuat salah)
}

fmt. Cetakf("Diekstrak %s\n", file. Nama)
}
}

Itu OpenReader fungsi membaca arsip zip. Itu OpenReader fungsi menerima nama file zip sebagai argumen dan mengembalikan instance pembaca file zip. Itu untuk jangkauan loop melintasi konten file dalam instance pembaca. Itu membuat file baru dengan nama yang sama dengan file asli, dan menyalin konten file yang diekstrak ke file baru menggunakan io. Menyalin fungsi.

Buka zip Secara Manual atau Terprogram—Terserah Anda

Membuka zip file secara terprogram lebih mudah dilakukan jika Anda memiliki banyak file atau arsip untuk di-unzip. Anda mungkin juga mengintegrasikan fungsionalitas arsip ke dalam aplikasi utama Anda.

Dalam kasus lain, Anda mungkin lebih baik menggunakan aplikasi yang ada. Anda dapat menggunakan aplikasi bawaan atau pihak ketiga untuk mengekstrak arsip di Windows, macOS, dan Linux.