Created
January 25, 2017 13:08
-
-
Save toddlers/2cf1b77f0d64b8bf959f1073c2e85b84 to your computer and use it in GitHub Desktop.
getting fileinfo in go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"os" | |
) | |
func main() { | |
// can handle symbolic link, but will no follow the link | |
fileInfo, err := os.Lstat("file.txt") | |
// cannot handle symbolic link | |
//fileInfo, err := os.Lstat("file.txt") | |
if err != nil { | |
panic(err) | |
} | |
fmt.Println("Name : ", fileInfo.Name()) | |
fmt.Println("Size : ", fileInfo.Size()) | |
fmt.Println("Mode/permission : ", fileInfo.Mode()) | |
// --- check if file is a symlink | |
if fileInfo.Mode()&os.ModeSymlink == os.ModeSymlink { | |
fmt.Println("File is a symbolic link") | |
} | |
fmt.Println("Modification Time : ", fileInfo.ModTime()) | |
fmt.Println("Is a directory? : ", fileInfo.IsDir()) | |
fmt.Println("Is a regular file? : ", fileInfo.Mode().IsRegular()) | |
fmt.Println("Unix permission bits? : ", fileInfo.Mode().Perm()) | |
fmt.Println("Permission in string : ", fileInfo.Mode().String()) | |
fmt.Println("What else underneath? : ", fileInfo.Sys()) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
That
&
is a bitwise AND operation. You check if theos.ModeSymlink
bit is set.