我有以下结构:
project/
docs/
index.html
root.html
我正在尝试遍历这个项目结构,以便我可以读取每个文件的内容来处理它们。所以我想说“搜索目录项目”,然后它会搜索所有文件,并且只搜索第一级目录及其文件,所以如果有另一个目录里面有一个文件docs/,它会忽略它。
目前,我尝试使用“路径/文件路径”库来完成此操作:
func traverse(path string, file os.FileInfo, err error) error {
if file, err := os.Open(file.Name()); err == nil {
defer file.Close()
if fileStat, err := file.Stat(); err == nil {
switch mode := fileStat.Mode(); {
case mode.IsDir():
fmt.Println("it be a directory! lets traverse", file.Name())
filepath.Walk(file.Name(), traverse)
case mode.IsRegular():
fmt.Println("the thingy ", file.Name(), " is a file")
}
} else {
return errors.New("failed to check status")
}
}
return errors.New("failed 2 open file/dir?")
}
然后我从这里调用它:
if err := filepath.Walk("project/", traverse); err != nil {
setupErr("%s", err)
}
请注意,我相对于我的测试目录运行此可执行文件,因此它找到了该目录。我的问题实际上是当我运行它时,我得到以下信息:
it be a directory! lets traverse project
it be a directory! lets traverse project
# ^ printed about 20 more times ^
failed 2 open file/dir?
我认为我的递归有点偏离,也许它没有改变到目录中?任何想法,如果您需要更多信息,请询问,我会更新。
喵喔喔
相关分类