Golang ioutil.ReadDir 读取目录下的内容并排序
之前写的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
}
Golang ioutil.ReadDir 读取目录下的内容并排序的更多相关文章
- php删除目录及目录下的内容
今天遇到一个问题: java写的API,ppt转图片生成的目录和文件 在使用php调用API完成后,再使用php进行删除时,遇到了删除失败的问题 部署的环境是Ubuntu 导致删除失败的原因是权限的问 ...
- php读取目录下的所有文件
php读取目录下的所有文件 $path = './use'; $result = scanFile($path); function scanFile($path) { global $result; ...
- Python 读取文件下所有内容、获取文件名、截取字符、写回文件
# coding=gbk import os import os.path #读取目录下的所有文件,包括嵌套的文件夹 def GetFileList(dir, fileList): newDir ...
- 在windows 、linux下读取目录下所有文件名
Windows要引入的头文件是<Windows.h> 主要是两个函数FindFirstFile.FindNextFile MSDN里是这么说的: FindFirstFile functio ...
- php读取目录下的文件
工作需要写了一个读取指定目录下的文件,并显示列表,点击之后读取文件中的内容 高手拍砖,目录可以自由指定,我这里直接写的是获取当前文件目录下面的所有文件 <?php /** * 读取指定目录下面的 ...
- java读取目录下所有csv文件数据,存入三维数组并返回
package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...
- tree:以树形结构显示目录下的内容
tree命令 1.命令详解 [功能说明] tree命令的中文意思为“树”,功能是以树形结构列出指定目录下的所有内容包括所有文件.子目录及子目录里的目录和文件. [语法格式] tree [option] ...
- ls 显示目录下的内容和文件相关属性信息
1.命令功能 ls命令是“list directory contents”,显示当前目录下的内容和文件属性. 2.语法格式 ls [option] file ls 选项 文件名 3.选项说明 ...
- tree 数状型结构显示目录下的内容
1. 命令功能 tree中文意思“树”,以树形结构显示目录内容.. 2. 语法格式 tree [option] [directory] tree 选项 目录 3. 使用范例 当最小化安装l ...
随机推荐
- pip安装源
目录 介绍 永久配置安装源 Windows MacOS.Linux 配置文件内容 介绍 """ 1.采用国内源,加速下载模块的速度 2.常用pip源: -- 豆瓣:htt ...
- web框架链接
django系列教程(优):https://www.cnblogs.com/feixuelove1009/p/5823135.html
- windowsformshost mouse event not transmit to it's parent control
in the case you can do it to fix: MouseEventArgs e = new MouseEventArgs(Mouse.PrimaryDevice, 0); e.R ...
- C++中重载函数详解
函数的重载详解 什么时函数重载: 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数.重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避 ...
- poj 1064 求解最大化问题
对于二分而言,如果判断条件比较简单的话,在求解最大化或者最小化问题的时候就比较适用但是这道题目吖的卡精度.. #include<cstdio> #include<iostream&g ...
- Linux--环境变量配置文件
Linux系统中环境变量配置文件分为两类: 全局环境变量配置文件 /etc/profile 用户环境变量配置文件 ~/.bash_profile . ~/.bash_login ~/.profile ...
- JQuery 判断复选框是否选中
$("input").attr("checked") == "checked" or "undefined" $(&qu ...
- BAT面试笔试33题:JavaList、Java Map等经典面试题!答案汇总!
JavaList面试题汇总 1.List集合:ArrayList.LinkedList.Vector等. 2.Vector是List接口下线程安全的集合. 3.List是有序的. 4.ArrayLis ...
- Tomcat面试题汇总
详见:Tomcat 面试题汇总:https://blog.csdn.net/qq_25934401/article/details/81536958 1.Tomcat的缺省端口是多少,怎么修改? to ...
- docker 批量删除含有同样名字的images
docker rmi --force $(docker images | grep doss-api | awk '{print $3}') docker rmi $(docker images | ...