首頁 > 後端開發 > Golang > Go中如何判斷一個檔案是否可執行?

Go中如何判斷一個檔案是否可執行?

Patricia Arquette
發布: 2024-11-03 19:30:29
原創
773 人瀏覽過

How to Determine if a File is Executable in Go?

在Go 中驗證檔案的可執行性

在Go 中,您可以透過檢查檔案模式(特別是權限位元)來確定文件是否可執行。以下是如何建構一個函數來執行此檢查:

<code class="go">import (
    "os"
)

func IsExecutable(mode os.FileMode) bool {
    return mode&0111 != 0
}</code>
登入後複製

此函數使用位元與運算子 (&) 從檔案模式中提取最低 9 個權限位元(0777 八進位位元遮罩)。位元遮罩 0111 允許我們驗證檔案的任何權限位元是否設定為執行。如果設定了任何位,則函數將傳回 true。

測試案例:

考慮以下測試案例:

<code class="sh">#!/usr/bin/env bash
...
# create test directory and files
...
# set executable permission on quux.sh
chmod +x test/foo/bar/quux.sh
...</code>
登入後複製

以及對應的Go 程式碼:

<code class="go">import (
    "os"
    "path/filepath"
    "fmt"
)

func main() {
    filepath.Walk("test", func(path string, info os.FileInfo, err error) error {
        if err != nil || info.IsDir() {
            return err
        }
        fmt.Printf("%v %v", path, IsExecutable(info.Mode()))
    }
}</code>
登入後複製

test/foo/bar/baz.txt false
test/foo/bar/quux.sh true
登入後複製
執行此程式碼應列印:

這確認了baz.txt 不可執行,而quux.sh 則如測試案例所預期的那樣。

Windows 相容性

提供的解決方案特定於 Unix 系統,包括 Linux 和 macOS。對於 Windows,您可以使用 os.可執行函數來確定檔案是否可執行。但值得注意的是,os.Executable 僅指示該檔案是否具有「.exe」副檔名,而非其實際的可執行性。

以上是Go中如何判斷一個檔案是否可執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板