首頁 >後端開發 >Golang >如何將 zip 中的檔案標記為 unix 可執行檔?

如何將 zip 中的檔案標記為 unix 可執行檔?

WBOY
WBOY轉載
2024-02-14 08:18:08985瀏覽

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

php小編小新為您介紹如何將zip檔案中的檔案標記為Unix執行檔。在Unix系統中,檔案的可執行屬性是透過檔案的權限來決定的,因此我們需要修改zip檔案中的檔案的權限。首先,將zip檔案解壓縮到目標資料夾中。然後,使用chmod指令來修改檔案的權限。最後,將修改後的檔案重新打包為zip檔。透過這個簡單的步驟,您就可以將zip檔案中的檔案標記為Unix執行檔了。

問題內容

我想寫一個這樣的函數:

func MarkFileAsExecutable(zipPath, filePath string) error

它接收 zip 的路徑和 zip 中的檔案路徑。目標是使用 zip 套件更改內部檔案的externalattributes,將其標記為unix可執行檔。

請注意,在使用 chmod x 歸檔檔案之前將檔案標記為可執行檔並不是解決方案,因為我需要它在 windows 上運作。因此,我需要相應地修改現有的 zip 檔案。

解決方法

您可以使用 zip 套件。它提供了一個reader和一個writer。您用閱讀器開啟 zip 檔案。然後您遍歷存檔中的文件,根據需要更改權限,並將文件複製到編寫器。

這是一個最小的範例,沒有錯誤檢查:

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)
    }
}

以上是如何將 zip 中的檔案標記為 unix 可執行檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除