Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengezip Kandungan Direktori Tidak Termasuk Folder Root?

Bagaimana untuk Mengezip Kandungan Direktori Tidak Termasuk Folder Root?

Linda Hamilton
Linda Hamiltonasal
2024-11-18 22:17:02359semak imbas

How to Zip Directory Contents Excluding the Root Folder?

Cara Mengezip Kandungan Direktori Tidak Termasuk Folder Root

Soalan:

Anda mempunyai direktori struktur seperti ini:

dir1
  file1.html
  file2.go

Apabila anda zip ke dir1.zip dan ekstraknya, anda mendapat struktur yang sama:

dir1
  file1.html
  file2.go

Walau bagaimanapun, anda mahu zip kandungan di dalam "dir1" tanpa folder akar "dir1" sebagai hasilnya selepas mengekstrak.

Jawapan:

Untuk mencapai ini, ubah suai kod dalam fungsi Zipit anda. Secara khusus, periksa kod berikut:

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

Kod ini menambah direktori asas (dalam kes ini, "dir1") pada nama fail di dalam arkib. Untuk mengecualikan folder akar daripada kandungan yang diekstrak, cuma alih keluar penambahan direktori asas:

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

Kod ini memangkas awalan daripada laluan dan menetapkannya kepada nama pengepala tanpa memasukkan direktori asas.

Contoh:

Jika anda memanggil fungsi anda sebagai berikut:

Zipit("dir1/", "dir1.zip")

Selepas membuat pengubahsuaian kod, kandungan anda yang diekstrak ialah:

file1.html
file2.go

tanpa folder akar "dir1".

Lain-lain Nota:

  • Perlu diperhatikan bahawa pengubahsuaian ini mempengaruhi nama fail dalam arkib, bukan kandungan sebenar fail.
  • Anda boleh bereksperimen dengan fungsi laluan fail lain untuk menyesuaikan lagi nama fail seperti yang dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Mengezip Kandungan Direktori Tidak 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