Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengezip Kandungan Folder dalam Go Tanpa Termasuk Folder Root?

Bagaimana untuk Mengezip Kandungan Folder dalam Go Tanpa Termasuk Folder Root?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 21:46:01695semak imbas

How to Zip Folder Content in Go Without Including the Root Folder?

Mengzip Kandungan daripada Folder Tidak Termasuk Folder Root

Dalam Go, mengezip kandungan dalam direktori sambil mengecualikan folder akar boleh dicapai menggunakan zip .Penulis.

Isu Penerangan

Kod asal bertujuan untuk mengezip kandungan direktori ("dir1") ke dalam "dir1.zip". Walau bagaimanapun, selepas pengekstrakan, fail yang dizip mengekalkan struktur folder "dir1" sebagai akarnya. Matlamatnya adalah untuk menghapuskan folder akar semasa pengekstrakan.

Penyelesaian

Untuk mencapai ini, kita perlu mengubah suai medan pengepala.Nama dalam zip.Writer. Medan ini menentukan nama fail dalam arkib. Dalam kod asal, medan ditetapkan seperti berikut:

if baseDir != "" {
    header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}

Kod ini memastikan bahawa nama fail termasuk baseDir ("dir1") dan laluan fail berbanding dengan direktori sumber ("path/dir1" ). Walau bagaimanapun, untuk mengalih keluar folder akar selepas pengekstrakan, kita perlu meninggalkan baseDir:

header.Name = strings.TrimPrefix(path, source)

Dengan pengubahsuaian ini, fail yang dizip akan berada terus di bawah akar arkib, dan mereka tidak akan mempunyai " folder dir1" sebagai akarnya selepas pengekstrakan.

Hasil

Dengan meninggalkan baseDir dari medan header.Name, kandungan direktori "dir1" akan dizip ke dalam "dir1.zip" tanpa folder akar. Ini membolehkan pengguna mengekstrak fail terus tanpa perlu menavigasi folder "dir1".

Atas ialah kandungan terperinci Bagaimana untuk Mengezip Kandungan Folder dalam Go Tanpa Termasuk Folder Root?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn