1 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
filepath.Walk 可能存在的性能問題有明確記錄:
文件按詞法順序遍歷,這使得輸出具有確定性,但意味著對(duì)于非常大的目錄,遍歷可能效率低下。
使用os.File.Readdir按文件系統(tǒng)順序迭代文件:
Readdir 讀取與文件關(guān)聯(lián)的目錄的內(nèi)容,并返回最多包含 n 個(gè) FileInfo 值的片段,如 Lstat 按目錄順序返回的那樣。對(duì)同一文件的后續(xù)調(diào)用將產(chǎn)生更多的 FileInfo。
package main
import (
? ? "fmt"
? ? "io"
? ? "log"
? ? "os"
? ? "time"
)
func main() {
? ? dir, err := os.Open("/tmp")
? ? if err != nil {
? ? ? ? log.Fatal(err)
? ? }
? ? for {
? ? ? ? files, err := dir.Readdir(10)
? ? ? ? if err == io.EOF {
? ? ? ? ? ? break
? ? ? ? }
? ? ? ? if err != nil {
? ? ? ? ? ? log.Fatal(err)
? ? ? ? }
? ? ? ? for _, fi := range files {
? ? ? ? ? ? classifier := ""
? ? ? ? ? ? if fi.IsDir() {
? ? ? ? ? ? ? ? classifier = "/"
? ? ? ? ? ? }
? ? ? ? ? ? fmt.Printf("%v %12d %s%s\n",
? ? ? ? ? ? ? ? fi.ModTime().UTC().Truncate(time.Second),
? ? ? ? ? ? ? ? fi.Size(),
? ? ? ? ? ? ? ? fi.Name(), classifier,
? ? ? ? ? ? )
? ? ? ? }
? ? }
}
- 1 回答
- 0 關(guān)注
- 124 瀏覽
添加回答
舉報(bào)