FileInfo.IsDir()不检测目录

时间:2015-10-02 13:29:22

标签: go

我有一些代码遍历目录以获取文件,对它们进行操作并使用IsDir()来跳过目录。但是,目录未被正确检测到:

err = filepath.Walk(dir, func(path string, f os.FileInfo, err error) error {
    if !f.IsDir() {
        fileList = append(fileList, path)
    }
    return nil
})

错误:

Put app/javascripts: read public/app/javascripts: is a directory

我在OSX上。这是目录列表:

drwxr-xr-x@   6 me  staff     204 Sep 25 11:28 javascripts

有没有更好的方法来检测目录?

2 个答案:

答案 0 :(得分:1)

我看着错误的目录(令人困惑的名字)。这是一个符号链接,这是有道理的。

答案 1 :(得分:1)

看起来该文件是一个目录,也是一个符号链接。要排除符合这两个条件的文件,您可以使用:

if !f.IsDir() && (f.Mode()&os.ModeSymlink) != os.ModeSymlink {
    ...
}