Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menandakan fail dalam zip sebagai boleh laku unix?

Bagaimana untuk menandakan fail dalam zip sebagai boleh laku unix?

WBOY
WBOYke hadapan
2024-02-14 08:18:08962semak imbas

如何将 zip 中的文件标记为 unix 可执行文件?

Editor php Xiaoxin akan memperkenalkan kepada anda cara menandakan fail dalam fail zip sebagai fail boleh laku Unix. Dalam sistem Unix, atribut boleh laku bagi fail ditentukan oleh kebenaran fail, jadi kami perlu mengubah suai kebenaran fail dalam fail zip. Pertama, nyahzip fail zip ke dalam folder sasaran. Kemudian, gunakan arahan chmod untuk mengubah suai kebenaran fail. Akhir sekali, bungkus semula fail yang diubah suai ke dalam fail zip. Dengan langkah mudah ini, anda boleh menandakan fail dalam fail zip anda sebagai boleh laku Unix.

Kandungan soalan

Saya ingin menulis fungsi seperti ini:

func MarkFileAsExecutable(zipPath, filePath string) error

Ia menerima laluan ke zip dan laluan fail dalam zip. Matlamatnya adalah untuk menggunakan pakej zip untuk menukar atribut luaran fail dalaman, menandakannya sebagai boleh laku unix.

Sila ambil perhatian bahawa menandai fail sebagai boleh laku sebelum mengarkibkannya menggunakan chmod +x bukanlah penyelesaian kerana saya memerlukannya untuk berfungsi pada windows. Oleh itu, saya perlu mengubah suai arkib zip sedia ada dengan sewajarnya. chmod +x 归档文件之前将文件标记为可执行文件并不是一个解决方案,因为我需要它在 windows 上工作。因此,我需要相应地修改现有的 zip 存档。

解决方法

您可以使用 zip 包。它提供了一个reader和一个writer

Penyelesaian

Anda boleh menggunakan pakej 🎜. Ia menyediakan pembaca dan writer. Anda membuka arkib zip dengan Pembaca. Anda kemudian mengulangi fail dalam arkib, menukar kebenaran seperti yang diperlukan dan menyalin fail kepada penulis. 🎜 🎜Ini adalah contoh minimum tanpa semakan ralat: 🎜
package main

import (
    "archive/zip"
    "os"
)

func main() {
    r, _ := zip.OpenReader("example.zip")
    defer r.Close()

    f, _ := os.Create("output.zip")
    defer f.Close()

    w := zip.NewWriter(f)
    defer w.Close()

    for _, f := range r.File {
        f.SetMode(0777)
        w.Copy(f)
    }
}

Atas ialah kandungan terperinci Bagaimana untuk menandakan fail dalam zip sebagai boleh laku unix?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam