我需要遞歸地找到一個目錄中的所有文件,這個目錄也可以有很多sub-directories。我想知道是否有什么辦法,它只能給我*.json
個文件?我有下面的方法來完成這項工作,并遞歸地給我所有目錄中的所有文件,但我不確定在這里使用HasSuffix
是否正確。我是剛來golang的新手,所以我不確定是否有更好或更有效的方法來做到這一點。
func WalkDir(root string) ([]string, error) {
var files []string
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if !info.IsDir() && strings.HasSuffix(path, "json") {
files = append(files, path)
}
return nil
})
return files, err
}
另外,我如何修改上面的方法,以便它可以給我所有匹配*.json
或*.txt
后綴的文件。基本上,它應該能夠與后綴數組,并給我所有的文件匹配。這樣做的有效方法是什么?
您可能希望確保圓點(.)在文件后綴之前也存在。
正如@maxm所指出的,根據文檔,
WalkDir
是首選的:要檢查多個后綴是否匹配,可以嘗試:
以及使用: