Go提供开箱即用的目录迭代功能,_pytest.terminal.TerinalReporter
包中有filepath.Walk
。
但是,path/filepath
walks the file tree in lexical order。如何按照上次修改日期的顺序遍历文件树? THX
PS (接受答案后)我认为Go filepath.Walk
函数应该为人们提供一种自己提供排序的方式,如下面的答案,其中接受{{1人们只需要自己对文件进行排序即可。
答案 0 :(得分:4)
我认为,您应该自己实施,因为filepath.Walk
不允许您设置顺序。
查看Walk方法。它调用walk,它依赖于readDirNames中的文件名。基本上,您应该使用另一个Walk
逻辑来创建自己的readDirNames
方法。
以下是按照上次修改日期的顺序获取文件的方法(请注意,我忽略了错误):
package main
import (
"fmt"
"os"
"sort"
)
type ByModTime []os.FileInfo
func (fis ByModTime) Len() int {
return len(fis)
}
func (fis ByModTime) Swap(i, j int) {
fis[i], fis[j] = fis[j], fis[i]
}
func (fis ByModTime) Less(i, j int) bool {
return fis[i].ModTime().Before(fis[j].ModTime())
}
func main() {
f, _ := os.Open("/")
fis, _ := f.Readdir(-1)
f.Close()
sort.Sort(ByModTime(fis))
for _, fi := range fis {
fmt.Println(fi.Name())
}
}