在Go

时间:2018-10-04 20:53:19

标签: go

https://golang.org/pkg/os/#Lstat说:

func Lstat(name string) (FileInfo, error)
  

Lstat返回描述命名文件的FileInfo。如果文件是符号链接,则返回的FileInfo将描述符号链接。 Lstat不会尝试跟随该链接。如果有错误,它将是* PathError类型。

但是,返回的os.FileInfo接口不会提供任何符号链接信息。这些信息去哪儿了?我应该在os.FileInfo上使用特定于平台的Sys()方法吗?

1 个答案:

答案 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")
}