为了账号安全,请及时绑定邮箱和手机立即绑定

Go - 遍历当前目录中的目录/文件

Go - 遍历当前目录中的目录/文件

Go
摇曳的蔷薇 2021-10-25 18:26:28
我有以下结构: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 projectit be a directory! lets traverse project# ^ printed about 20 more times ^failed 2 open file/dir?我认为我的递归有点偏离,也许它没有改变到目录中?任何想法,如果您需要更多信息,请询问,我会更新。
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

Walk 遍历以 root 为根的文件树,为树中的每个文件或目录调用 walkFn,包括 root。访问文件和目录时出现的所有错误都由 walkFn 过滤。文件按词法顺序遍历,这使得输出具有确定性,但意味着对于非常大的目录来说,Walk 可能效率低下。Walk 不遵循符号链接。


查看完整回答
反对 回复 2021-10-25
  • 2 回答
  • 0 关注
  • 269 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信