Home > Backend Development > Golang > How to Determine if a File is Executable in Go?

How to Determine if a File is Executable in Go?

Patricia Arquette
Release: 2024-11-03 19:30:29
Original
772 people have browsed it

How to Determine if a File is Executable in Go?

Verifying File Executability in Go

In Go, you can determine whether a file is executable by examining its file mode, specifically the permission bits. Here's how you can construct a function to perform this check:

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

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

This function uses the bitwise AND operator (&) to extract the lowest 9 permission bits (0777 octal bitmask) from the file mode. The bitmask 0111 allows us to verify if any of the file's permission bits are set for execution. If any bits are set, the function returns true.

Test Case:

Consider the following test case:

<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>
Copy after login

And the corresponding Go code:

<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>
Copy after login

Running this code should print:

test/foo/bar/baz.txt false
test/foo/bar/quux.sh true
Copy after login

This confirms that baz.txt is not executable while quux.sh is, as intended by the test case.

Windows Compatibility

The provided solution is specific to Unix systems, including Linux and macOS. For Windows, you can use the os. executable function to determine if a file is executable. However, it's worth noting that os.Executable only indicates whether the file has the ".exe" extension, not its actual executability.

The above is the detailed content of How to Determine if a File is Executable in Go?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template