Skip to content

Commit

Permalink
优化 文件扫描性能
Browse files Browse the repository at this point in the history
  • Loading branch information
dengsgo committed Aug 23, 2020
1 parent 8192971 commit 86cf405
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 17 deletions.
24 changes: 7 additions & 17 deletions fileboy.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@ func eventDispatcher(event fsnotify.Event) {
func addWatcher() {
logInfo("collecting directory information...")
dirsMap := map[string]bool{}
for _, dir := range cfg.Monitor.ExceptDirs {
if dir == "." {
logAndExit("exceptDirs must is not project root path ! err path:", dir)
}
}
for _, dir := range cfg.Monitor.IncludeDirs {
darr := dirParse2Array(dir)
if len(darr) < 1 || len(darr) > 2 {
Expand Down Expand Up @@ -147,16 +152,7 @@ func addWatcher() {
}

}
for _, dir := range cfg.Monitor.ExceptDirs {
if dir == "." {
logAndExit("exceptDirs must is not project root path ! err path:", dir)
}
p := projectFolder + "/" + dir
delete(dirsMap, p)
listFile(p, func(d string) {
delete(dirsMap, d)
})
}

for dir := range dirsMap {
logInfo("watcher add -> ", dir)
err := watcher.Add(dir)
Expand Down Expand Up @@ -224,13 +220,7 @@ func watchChangeHandler(event fsnotify.Event) {
continue
}
// check exceptDirs
has := false
for _, v := range cfg.Monitor.ExceptDirs {
if strings.HasPrefix(event.Name, projectFolder+"/"+v) {
has = true
}
}
if has {
if hitDirs(event.Name, &cfg.Monitor.ExceptDirs) {
continue
}

Expand Down
13 changes: 13 additions & 0 deletions util.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,24 @@ func dirParse2Array(s string) []string {
return r
}

func hitDirs(d string, dirs *[]string) bool {
d += "/"
for _, v := range *dirs {
if strings.HasPrefix(d, projectFolder+"/"+v+"/") {
return true
}
}
return false
}

func listFile(folder string, fun func(string)) {
files, _ := ioutil.ReadDir(folder)
for _, file := range files {
if file.IsDir() {
d := folder + "/" + file.Name()
if hitDirs(d, &cfg.Monitor.ExceptDirs) {
continue
}
fun(d)
listFile(d, fun)
}
Expand Down

0 comments on commit 86cf405

Please sign in to comment.