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()) | |
} |
Why it can't work on the Winodws?
Hey guys, maybe someone can explain me what is going on on line 28? I'll really appreciate for it. I can't understand this one specifically:
fileInfo.Mode()&os.ModeSymlink
what is &
doing here? It looks like a pointer thing, but why it goes directly after function call? Please, correct me if I'm wrong.
Thanks in advance!
That &
is a bitwise AND operation. You check if the os.ModeSymlink
bit is set.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, exactly what I needed.