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

Mary-Kate Olsen
Lepaskan: 2024-11-17 21:46:01
asal
691 orang telah melayarinya

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))
}
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan