在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中文網其他相關文章!