Dalam kerja harian kita, kita selalunya perlu mencari fail yang dibuat dalam julat tarikh tertentu. Dalam GOLANG, kita boleh menggunakan beberapa fungsi dan perpustakaan terbina dalam untuk mencapai fungsi ini. Dalam artikel ini, editor PHP Xiaoxin akan memperkenalkan cara menggunakan bahasa pengaturcaraan GOLANG untuk melaksanakan fungsi mencari fail dalam julat tarikh tertentu. Sama ada untuk kerja harian atau projek peribadi, fungsi ini sangat praktikal, mari kita ketahui bersama!
Saya ingin tahu cara mencari fail dalam folder tertentu dalam julat tarikh tertentu. Contohnya: Saya ingin mencari semua fail dalam folder x yang dibuat antara 1 Ogos 2013 dan 31 Ogos 2013.
Saya mencuba ini:
dir := "path/to/dir" t, err := time.Parse("2006-01-02T15:04:05-07:00", "2018-04-07T05:48:03+08:00") if err != nil { panic(err) } paths, infos, err := FindFilesAfter(dir, t) if err != nil { panic(err) } for i, _ := range paths { checkFile(paths[i], infos[i]) } func FindFilesAfter(dir string, t time.Time) (paths []string, infos []os.FileInfo, err error) { err = filepath.Walk(dir, func(p string, i os.FileInfo, e error) error { if e != nil { return e } if !i.IsDir() && i.ModTime().After(t) { paths = append(paths, p) infos = append(infos, i) } return nil }) return }
Semoga jawapan berikut adalah yang anda cari. p>
time
包中的函数 before
和 after
masa (masa capaian) ialah masa capaian fail
mtime (masa pengubahsuaian) ialah masa pengubahsuaian fail
ctime (masa tukar) ialah inod atau masa tukar fail
package main import ( "io/fs" "log" "os" "syscall" "time" ) func main() { // prepare data start, _ := time.Parse(time.RFC3339, "2022-11-26T07:04:05Z") end, _ := time.Parse(time.RFC3339, "2022-11-26T08:10:00Z") var dir = "your path" files := FindFilesByDateRange(dir, start, end) // print result log.Printf("file range: %s-%s\n", start.Format(time.RFC3339), end.Format(time.RFC3339)) for _, f := range files { log.Println(f.Name()) } } func FindFilesByDateRange(dir string, start, end time.Time) []fs.FileInfo { fileSystem := os.DirFS(dir) var files []fs.FileInfo if err := fs.WalkDir(fileSystem, ".", func(path string, d fs.DirEntry, err error) error { if err != nil { log.Fatal(err) } fileInfo, err := d.Info() if err != nil { return err } stat := fileInfo.Sys().(*syscall.Stat_t) cDate := time.Unix(stat.Ctimespec.Sec, stat.Ctimespec.Nsec).UTC() if !d.IsDir() && (cDate.After(start) && cDate.Before(end)) { files = append(files, fileInfo) } return nil }); err != nil { return nil } return files }
Atas ialah kandungan terperinci GOLANG - Cari fail yang dibuat dalam julat tarikh tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!