diff --git a/fileSync.exe b/fileSync.exe index 2014d55..674dde9 100644 Binary files a/fileSync.exe and b/fileSync.exe differ diff --git a/fileSync.go b/fileSync.go index 1fea33c..9f8b626 100644 --- a/fileSync.go +++ b/fileSync.go @@ -3,12 +3,14 @@ package main import ( "bytes" "encoding/binary" - "github.com/fsnotify/fsnotify" "io" + "io/fs" "os" "path/filepath" "strings" "time" + + "github.com/fsnotify/fsnotify" ) const ( @@ -43,6 +45,39 @@ type Watch struct { watch *fsnotify.Watcher } +const ( + //LOGPATH LOGPATH/time.Now().Format(FORMAT)/*.log + LOGPATH = "./" + //FORMAT . + FORMAT = "20060102" + //LineFeed 换行 + LineFeed = "\r\n" + FileName = "fileSync.log" +) + +//以天为基准,存日志 +var path = LOGPATH + time.Now().Format(FORMAT) + "_" + +//WriteLog return error +func WriteLog(msg string) error { + var ( + err error + f *os.File + ) + + f, err = os.OpenFile(path+FileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + _, err = io.WriteString(f, "Tag"+"::"+msg+LineFeed) + + defer f.Close() + return err +} + +//IsExist 判断文件夹/文件是否存在 存在返回 true +func IsExist(f string) bool { + _, err := os.Stat(f) + return err == nil || os.IsExist(err) +} + // 收集更改了的文件 func CollectFile(File string) { ext := filepath.Ext(File) @@ -110,8 +145,9 @@ func existPath(path string) bool { //监控目录 func (w *Watch) watchDir(dir string) { //通过Walk来遍历目录下的所有子目录 - filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + filepath.WalkDir(dir, func(path string, info fs.DirEntry, err error) error { //这里判断是否为目录,只需监控目录即可 目录下的文件也在监控范围内,不需要我们一个一个加 + if err == nil && info.IsDir() { path, err := filepath.Abs(path) if err != nil { @@ -129,7 +165,7 @@ func (w *Watch) watchDir(dir string) { for _, v := range AddDirs { if v != "" && existPath(v) { //通过Walk来遍历目录下的所有子目录 - filepath.Walk(v, func(path string, info os.FileInfo, err error) error { + filepath.WalkDir(v, func(path string, info fs.DirEntry, err error) error { //这里判断是否为目录,只需监控目录即可 目录下的文件也在监控范围内,不需要我们一个一个加 if err == nil && info.IsDir() { path, err := filepath.Abs(path) @@ -148,6 +184,15 @@ func (w *Watch) watchDir(dir string) { } } + //for _, v := range AddDirs { + // if v != "" && existPath(v) { + // path, err := filepath.Abs(path) + // if err != nil && !isHidden(path) { + // w.watch.Add(path) + // } + // } + //} + // 启动文件监听goroutine go func() { for { diff --git a/go.mod b/go.mod index 50304e8..c4c79b5 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,7 @@ module fileSync -go 1.15 +go 1.17 require github.com/fsnotify/fsnotify v1.5.1 + +require golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect