我需要 golan 的一些帮助来编写一个程序,该程序可以搜索给定目录及其子目录以在每个目录中查找特定的单词。
到目前为止,这是我列出目录并将它们保存为数组的方法。现在我想检查它们中的每一个,看看它是否有 child ,如果有,我应该打开它直到我到达树的最后一层。
package main
import (
"fmt"
"os"
)
func main() {
d, err := os.Open("/Perkins")
// fmt.Println(d.Readdirnames(-1))
y, err:=d.Readdirnames(-1) //
fmt.Println(y)
for i:=0; i<len(y); i++{
if y[i]!=" "{
Folders:=y[i]
temp,err:=os.Open("/"Folders) //how do i out the array element as a path?
fmt.Println (temp)
fmt.Println(err)
}
}
最佳答案
注意:"/"Folders
不起作用:"/"+ Folders
在您的情况下,这应该会更好:
temp,err:=os.Open("/Perkins/" + Folders)
(尽管“Folders
”不是一个好名字,但“subfolder
”会更合适)
一种更有效的方式,如commented通过 chendesheng (参见 answer ),将(作为 in this class )使用 path/filepath/#Walk
:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
filepath.Walk("/Perkins", func(path string, info os.FileInfo, err error) error {
fmt.Println(path)
return nil
})
}
这将列出所有 文件,但您可以将它与过滤这些文件的函数相关联:参见this example :
matched, err := filepath.Match("*.mp3", fi.Name())
然后您可以忽略不需要的文件,只处理与您的模式匹配的文件。
关于go - 在go中列出和访问目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783429/