基本信息
源码名称:golang监控目录变化
源码大小:0.83M
文件格式:.zip
开发语言:Go
更新时间:2019-03-30
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
package main import ( "container/list" "encoding/csv" _ "encoding/json" "fmt" "os" "path/filepath" "time" "github.com/fsnotify/fsnotify" ) type Fileinfo struct { Filepath string `json:"Filepath"` FileName string `json:"FileName"` ModTime string `json:"ModTime"` FileSize string `json:"FileSize"` } var outputFileName string = "filesName.txt" func CheckErr(err error) { if nil != err { panic(err) } } func GetFullPath(path string) string { absolutePath, _ := filepath.Abs(path) return absolutePath } func ScanPath(path string) error { fullPath := GetFullPath(path) //listStr := list.New() f, err := os.Create(outputFileName) CheckErr(err) defer f.Close() f.WriteString("\xEF\xBB\xBF") filepath.Walk(fullPath, func(path string, fi os.FileInfo, err error) error { if nil == fi { return err } if fi.IsDir() { //忽略目录 fmt.Println(fullPath fi.Name()) return nil } name := fi.Name() if outputFileName != name { go func() { f.WriteString(path "|" name "|" string(fi.Size()) "|" fi.ModTime().Format("2006-01-02 15:04:05") "\n") }() //listStr.PushBack(path "|" name "|" string(fi.Size()) "|" fi.ModTime().Format("2006-01-02 15:04:05")) } return nil }) return nil //OutputFilesName(listStr) } func ConvertToSlice(listStr *list.List) []string { sli := []string{} for el := listStr.Front(); nil != el; el = el.Next() { sli = append(sli, el.Value.(string)) } return sli } func OutputFilesName(listStr *list.List) { files := ConvertToSlice(listStr) //sort.StringSlice(files).Sort()// sort f, err := os.Create(outputFileName) //f, err := os.OpenFile(outputFileName, os.O_APPEND | os.O_CREATE, os.ModeAppend) CheckErr(err) defer f.Close() f.WriteString("\xEF\xBB\xBF") writer := csv.NewWriter(f) length := len(files) for i := 0; i < length; i { writer.Write([]string{files[i]}) } writer.Flush() } func main() { start := time.Now() fmt.Println(ScanPath("E:\\微")) fmt.Println("处理时间约 %f f% 秒", time.Now().Sub(start).Seconds()) fmt.Println("done!") }