Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menentukan sama ada Fail Boleh Laksana dalam Go?

Bagaimana untuk Menentukan sama ada Fail Boleh Laksana dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 19:30:29832semak imbas

How to Determine if a File is Executable in Go?

Mengesahkan Kebolehlaksanaan Fail dalam Go

Dalam Go, anda boleh menentukan sama ada fail boleh laku dengan memeriksa mod failnya, khususnya bit kebenaran . Begini cara anda boleh membina fungsi untuk melaksanakan semakan ini:

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

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

Fungsi ini menggunakan operator bitwise AND (&) untuk mengekstrak 9 bit kebenaran terendah (0777 octal bitmask) daripada mod fail. Bitmask 0111 membolehkan kami mengesahkan sama ada mana-mana bit kebenaran fail ditetapkan untuk pelaksanaan. Jika mana-mana bit ditetapkan, fungsi akan kembali benar.

Kes Ujian:

Pertimbangkan kes ujian berikut:

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

Dan yang sepadan Kod 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>

Menjalankan kod ini harus mencetak:

test/foo/bar/baz.txt false
test/foo/bar/quux.sh true

Ini mengesahkan bahawa baz.txt tidak boleh dilaksanakan manakala quux.sh adalah, seperti yang dimaksudkan oleh kes ujian.

Keserasian Windows

Penyelesaian yang disediakan adalah khusus untuk sistem Unix, termasuk Linux dan macOS. Untuk Windows, anda boleh menggunakan os. fungsi boleh laku untuk menentukan sama ada fail boleh laku. Walau bagaimanapun, perlu diingat bahawa os.Executable hanya menunjukkan sama ada fail tersebut mempunyai sambungan ".exe", bukan kebolehlaksanaan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan sama ada Fail Boleh Laksana dalam Go?. 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