Golang ioutil.ReadDir 读取目录下的内容并排序
2024-09-03 05:12:28
之前写的https://www.cnblogs.com/pu369/p/10620731.html一文中,也有对slice的排序,但代码乱的自己也看不下去了。
参考https://blog.csdn.net/zhangyexinaisurui/article/details/82688618准备读目录,并按时间排序
一、与参考内容一样,直接读目录,默认是按名字排序
package main import (
"fmt"
"io/ioutil"
) func listAll(path string, curHier int) {
readerInfos, err := ioutil.ReadDir(path)
if err != nil {
fmt.Println(err)
return
}
for _, info := range readerInfos {
if info.IsDir() {
for tmpheir := curHier; tmpheir > ; tmpheir-- {
fmt.Printf("|\t")
}
fmt.Println(info.Name(), "\\")
listAll(path+"\\"+info.Name(), curHier+)
} else {
for tmpheir := curHier; tmpheir > ; tmpheir-- {
fmt.Printf("|\t")
}
fmt.Println(info.Name(), " ", info.ModTime())
}
}
}
func main() {
// dir := os.Args[1]
dir := "I:/img"
listAll(dir, )
}
二、改为按[]os.FileInfo的 info.ModTime()排序
package main import (
"fmt"
"io/ioutil"
"os"
"sort"
) func listAll(path string, curHier int) {
readerInfos, err := ioutil.ReadDir(path)
if err != nil {
fmt.Println(err)
return
}
readerInfos1 := sortByTime(readerInfos)
for _, info := range readerInfos1 {
if info.IsDir() {
for tmpheir := curHier; tmpheir > ; tmpheir-- {
fmt.Printf("|\t")
}
fmt.Println(info.Name(), "\\")
listAll(path+"\\"+info.Name(), curHier+)
} else {
for tmpheir := curHier; tmpheir > ; tmpheir-- {
fmt.Printf("|\t")
}
fmt.Println(info.Name(), " ", info.ModTime())
}
}
}
func main() {
// dir := os.Args[1]
dir := "I:/img"
listAll(dir, )
}
func sortByTime(pl []os.FileInfo) []os.FileInfo {
sort.Slice(pl, func(i, j int) bool {
flag := false
if pl[i].ModTime().After(pl[j].ModTime()) {
flag = true
} else if pl[i].ModTime().Equal(pl[j].ModTime()) {
if pl[i].Name() < pl[j].Name() {
flag = true
}
}
return flag
})
return pl
}
最新文章
- 微信公众账号 token 验证失败 解决办法
- iOS UIAlertController
- windows上JSP开发环境全搭建
- FPGA学习
- shell脚本判断文件类型
- iOS UIImage DownLoad图片的下载缓存全部在此
- [POJ2828]Buy Tickets(线段树,单点更新,二分,逆序)
- swift基础--运算符
- 【23】宁以non-member、non-friend替换member函数
- 深入理解 Javascript 面向对象编程(转)
- centos永久修改主机名
- 判定程序员等级,HashMap就够了
- sql语句表示不等于
- 解决内存不能为read错误
- eclpse安装jetty插件
- div 只显示两行超出部分隐藏
- 微信小程序--修改data数组或对象里面的值
- POJ 2352 数星星
- 【代码笔记】iOS-NSLog的使用
- HDU-3507 Print Article (斜率优化)