zoukankan      html  css  js  c++  java
  • 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 > 0; tmpheir-- {
                    fmt.Printf("|	")
                }
                fmt.Println(info.Name(), "\")
                listAll(path+"\"+info.Name(), curHier+1)
            } else {
                for tmpheir := curHier; tmpheir > 0; tmpheir-- {
                    fmt.Printf("|	")
                }
                fmt.Println(info.Name(), " ", info.ModTime())
            }
        }
    }
    func main() {
        //    dir := os.Args[1]
        dir := "I:/img"
        listAll(dir, 0)
    }

    二、改为按[]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 > 0; tmpheir-- {
                    fmt.Printf("|	")
                }
                fmt.Println(info.Name(), "\")
                listAll(path+"\"+info.Name(), curHier+1)
            } else {
                for tmpheir := curHier; tmpheir > 0; tmpheir-- {
                    fmt.Printf("|	")
                }
                fmt.Println(info.Name(), " ", info.ModTime())
            }
        }
    }
    func main() {
        //    dir := os.Args[1]
        dir := "I:/img"
        listAll(dir, 0)
    }
    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
    }
  • 相关阅读:
    题解 CF432D 【Prefixes and Suffixes】
    题解 P3199 【[HNOI2009]最小圈】
    题解 AT1221 【水筒】
    题解 P4381 【[IOI2008]Island】
    题解 CF1242B 【0-1 MST】
    《数据库系统概论》 -- 3.1 SQL概论和DDL
    《数据库系统概论》 -- 2. 关系操作
    《数据库系统概论》 -- 1. 绪论
    配置vim成为IDE
    ubuntu--软件管理
  • 原文地址:https://www.cnblogs.com/pu369/p/11198617.html
Copyright © 2011-2022 走看看