Golang按日期和时间查找最新的文件

Golang按日期和时间查找最新的文件,第1张

概述我不确定我是否正确执行此 *** 作,但最终我想在目录中找到文件的最新修改日期并返回文件名.我到目前为止的代码如下.有人可以帮助我提供比这更有效的解决方案.我真的有一种感觉,这是超级hacky.我正在做的是获取日期并删除 package mainimport ( "fmt" "io/ioutil" "os" "strconv" "strings")func 我不确定我是否正确执行此 *** 作,但最终我想在目录中找到文件的最新修改日期并返回文件名.我到目前为止的代码如下.有人可以帮助我提供比这更有效的解决方案.我真的有一种感觉,这是超级Hacky.我正在做的是获取日期并删除

package mainimport (    "fmt"    "io/IoUtil"    "os"    "strconv"    "strings")func main() {    dir := "C:\temp\"    files,_ := IoUtil.ReadDir(dir)    for _,f := range files {        fi,_ := os.Stat(dir + f.name())        s := strings.Split(fi.ModTime().Format("2006-01-02 15.04.05.000")," ")        fdate,err := strconv.Atoi(strings.Replace(s[0],"-","",-1))        if err != nil {            fmt.Println(err)        }        ftime,err := strconv.Atoi(strings.Replace(s[1],".",-1))        if err != nil {            fmt.Println(err)        }        fmt.Println(fi.name(),fdate+ftime)    }}
解决方法 注重细节和效率.检查错误.您询问了文件,因此请跳过目录和其他内容.允许具有相同修改时间戳的多个文件(例如,windows文件时间的分辨率最多为100纳秒).你已经有ModTime()所以不要调用os.Stat().直接使用time.Time方法.等等.

例如,

package mainimport (    "fmt"    "io/IoUtil"    "os"    "time")func main() {    dir := `C:\temp\` // windows directory    files,err := IoUtil.ReadDir(dir)    if err != nil {        fmt.Fprintln(os.Stderr,err)        os.Exit(1)    }    var modTime time.Time    var names []string    for _,fi := range files {        if fi.Mode().IsRegular() {            if !fi.ModTime().Before(modTime) {                if fi.ModTime().After(modTime) {                    modTime = fi.ModTime()                    names = names[:0]                }                names = append(names,fi.name())            }        }    }    if len(names) > 0 {        fmt.Println(modTime,names)    }}
总结

以上是内存溢出为你收集整理的Golang按日期和时间查找最新的文件全部内容,希望文章能够帮你解决Golang按日期和时间查找最新的文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1265606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存