在Go中列出目录

我一直在想如何简单地列出Go中单个目录中的文件和文件夹。

我发现filepath.Walk ,但它会自动进入子目录,这是我不想要的。 我所有的其他search都没有改变。

我确定这个function是存在的,但是很难find。 让我知道,如果有人知道我应该看看。 谢谢。

您可以尝试使用io/ioutil包中的ReadDir函数。 根据文档:

ReadDir读取由dirname命名的目录,并返回已sorting目录条目的列表。

结果片包含os.FileInfotypes,它们提供了这里列出的方法。 这是一个基本的例子,它列出了当前目录中所有内容的名称(包括文件夹,但没有特别标记 – 你可以使用IsDir()方法检查一个项目是否是一个文件夹):

 package main import ( "fmt" "io/ioutil" "log" ) func main() { files, err := ioutil.ReadDir("./") if err != nil { log.Fatal(err) } for _, f := range files { fmt.Println(f.Name()) } } 

更简单的,使用path/filepath

 package main import ( "fmt" "log" "path/filepath" ) func main() { files, err := filepath.Glob("*") if err != nil { log.Fatal(err) } fmt.Println(files) // contains a list of all files in the current directory } 

ioutil.ReadDir是一个很好的发现,但是如果你点击并查看源代码,就会发现它调用了os.File的Readdir方法。 如果您可以使用目录顺序并且不需要列表sorting,那么这个Readdir方法就是您所需要的。