https://golang.org/pkg/os/#Lstat说:
func Lstat(name string) (FileInfo, error)
Lstat返回描述命名文件的FileInfo。如果文件是符号链接,则返回的FileInfo将描述符号链接。 Lstat不会尝试跟随该链接。如果有错误,它将是* PathError类型。
但是,返回的os.FileInfo接口不会提供任何符号链接信息。这些信息去哪儿了?我应该在os.FileInfo
上使用特定于平台的Sys()方法吗?
答案 0 :(得分:2)
Stat
返回有关目标文件的信息,Lstat
返回有关符号链接本身的信息。
信息全部包含在文件的模式位中。您可以使用os
包中的预定义常量来检查您感兴趣的模式类型。
例如,如果您将fileInfo
中的os.Stat("/path/to/symlink")
传递给以下代码,则 NOT 表示这是符号链接。但是,如果您传递os.Lstat
的返回值,它将:
if fileInfo.Mode()&os.ModeSymlink != 0 {
fmt.Println(fileInfo.Name(), "is a symlink")
}