亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 291 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號