如何在不进入子目录的情况下迭代目录

时间:2014-01-15 17:58:56

标签: go

假设我有以下目录结构:

RootDir
---SubDir1
------SubSubDir
---------file1
---------file2
---SubDir2
---SubDir3
---file3
---file4

我想只对RootDir(SubDir1, Subdir2, Subdir3, file3, file 4)的内容进行迭代,并检查它是否是目录或文件,而不是像filepath.Walk那样进入子目录。

有没有办法在Go库中执行此操作?

编辑:

files, err := os.Open("c:\\Documents")
file, err := files.Readdir(0)

if err != nil {
    fmt.Printf("Error: %s\n", err)
}

for f := range file {
    fmt.Println(f.IsDir())
}

所以在这里我试图通过FileInfo迭代,这是一个切片,如果它是一个目录,检查每个文件,但我总是得到这个错误:

f.IsDir undefined (type int has no field or method IsDir)

1 个答案:

答案 0 :(得分:2)

您可以通过使用os.Open打开目录来阅读目录,并且返回的*os.File具有Readdir()方法,该方法为直接文件夹内容提供os.FileInfoFileInfo s IsDir() 1}}有一个{{1}}方法。