在Go中列出目录
我一直在想如何简单地列出Go中单个目录中的文件和文件夹。
我发现filepath.Walk
,但它会自动进入子目录,这是我不想要的。 我所有的其他search都没有改变。
我确定这个function是存在的,但是很难find。 让我知道,如果有人知道我应该看看。 谢谢。
您可以尝试使用io/ioutil
包中的ReadDir函数。 根据文档:
ReadDir读取由dirname命名的目录,并返回已sorting目录条目的列表。
结果片包含os.FileInfo
types,它们提供了这里列出的方法。 这是一个基本的例子,它列出了当前目录中所有内容的名称(包括文件夹,但没有特别标记 – 你可以使用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方法就是您所需要的。