Golang按日期和时间查找最新的文件
发布时间:2020-12-16 09:22:26 所属栏目:大数据 来源:网络整理
导读:我不确定我是否正确执行此操作,但最终我想在目录中找到文件的最新修改日期并返回文件名.我到目前为止的代码如下.有人可以帮助我提供比这更有效的解决方案.我真的有一种感觉,这是超级hacky.我正在做的是获取日期并删除 package mainimport ( "fmt" "io/ioutil
我不确定我是否正确执行此操作,但最终我想在目录中找到文件的最新修改日期并返回文件名.我到目前为止的代码如下.有人可以帮助我提供比这更有效的解决方案.我真的有一种感觉,这是超级hacky.我正在做的是获取日期并删除
package main import ( "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 main import ( "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) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |