• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang fsnotify.NewWatcher函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/go-fsnotify/fsnotify.NewWatcher函数的典型用法代码示例。如果您正苦于以下问题:Golang NewWatcher函数的具体用法?Golang NewWatcher怎么用?Golang NewWatcher使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了NewWatcher函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: Init

// Init ensures the internal state of the watcher is properly initialized
func (w *Watcher) Init() (err error) {
	if w.inited {
		return nil
	}

	w.fs, err = fsnotify.NewWatcher()
	if err != nil {
		return
	}

	stat, err := os.Stat(w.Dir)
	if err != nil {
		return
	}

	if !stat.IsDir() {
		err = fmt.Errorf("%s is not a directory", w.Dir)
		return
	}

	w.changes = make(chan string, 100)
	w.done = make(chan bool, 1)
	w.pending = make(map[string]bool)
	w.inited = true
	return
}
开发者ID:nullstyle,项目名称:mcdev,代码行数:27,代码来源:watcher.go


示例2: watcher

func (h *handler) watcher(f string) {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	defer watcher.Close()

	done := make(chan bool)
	go func() {
		for {
			select {
			case event := <-watcher.Events:
				log.Println("event:", event)
				if event.Op&fsnotify.Write == fsnotify.Write {
					log.Println("modified file:", event.Name)
					h.c <- true
				}
			case err := <-watcher.Errors:
				log.Println("error:", err)
			}
		}
	}()

	err = watcher.Add(f)
	if err != nil {
		log.Fatal(err)
	}
	<-done
}
开发者ID:highway900,项目名称:sigh,代码行数:29,代码来源:main.go


示例3: WatchDir

// WatchDir watches a directory and execute callback on any changes.
func (b *Base) WatchDir(path string, callback func() error) error {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		return err
	}
	defer watcher.Close()

	err = watcher.Add(path)
	if err != nil {
		return err
	}

	for {
		select {
		case event := <-watcher.Events:
			if (event.Op&fsnotify.Create == fsnotify.Create) || (event.Op&fsnotify.Remove == fsnotify.Remove) || (event.Op&fsnotify.Write == fsnotify.Write) || (event.Op&fsnotify.Rename == fsnotify.Rename) {

				logrus.WithFields(logrus.Fields{
					"Path":  path,
					"Event": event.String(),
				}).Info("Changes happened, executing callback")

				callback()
			}
		case err := <-watcher.Errors:
			if err != nil {
				logrus.WithFields(logrus.Fields{
					"Error": err.Error(),
					"Path":  path,
				}).Error("Error while watching path")
			}
		}
	}
	return nil
}
开发者ID:simudream,项目名称:resourced,代码行数:36,代码来源:base.go


示例4: RunWatcher

// watch file change
func RunWatcher(path string) {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	defer watcher.Close()

	done := make(chan bool)
	go func() {
		for {
			select {
			case event := <-watcher.Events:
				if event.Op&fsnotify.Write == fsnotify.Write {
					log.Printf("file modified:" + event.Name)
					LoadDict()
				}
			case err := <-watcher.Errors:
				log.Fatal(err)
			}
		}
	}()

	err = watcher.Add(path)
	if err != nil {
		log.Fatal(err)
	}
	<-done
}
开发者ID:henryluki,项目名称:word_filter,代码行数:29,代码来源:loader.go


示例5: main

func main() {
	file := "file.txt"

	r := gin.Default()
	m := melody.New()
	w, _ := fsnotify.NewWatcher()

	r.GET("/", func(c *gin.Context) {
		http.ServeFile(c.Writer, c.Request, "index.html")
	})

	r.GET("/ws", func(c *gin.Context) {
		m.HandleRequest(c.Writer, c.Request)
	})

	m.HandleConnect(func(s *melody.Session) {
		content, _ := ioutil.ReadFile(file)
		s.Write(content)
	})

	go func() {
		for {
			ev := <-w.Events
			if ev.Op == fsnotify.Write {
				content, _ := ioutil.ReadFile(ev.Name)
				m.Broadcast(content)
			}
		}
	}()

	w.Add(file)

	r.Run(":5000")
}
开发者ID:wuwenbao,项目名称:melody,代码行数:34,代码来源:main.go


示例6: init

func init() {
	// in snappy, we default to using the snappy data path
	snappDataPath := os.Getenv("SNAPP_APP_DATA_PATH")
	if snappDataPath != "" {
		dataPath = snappDataPath
	}

	MustRefresh()

	if Bool(false, "dumpConfig") {
		spew.Dump(GetAll(false))
	}

	go func() {

		watcher, err := fsnotify.NewWatcher()
		if err != nil {
			panic("Failed to create watcher: " + err.Error())
		}
		watcher.Add(dataPath + "/etc/opt/ninja")

		for {
			select {
			case ev := <-watcher.Events:
				log.Infof("Config updated: %s", ev.Name)
				MustRefresh()
			case err := <-watcher.Errors:
				log.Warningf("Config Watcher error: %s", err)
			}
		}

	}()
}
开发者ID:kpernyer,项目名称:go-ninja,代码行数:33,代码来源:config.go


示例7: Watch

func Watch() {
	watcher, _ = fsnotify.NewWatcher()
	// Listen watched file change event
	go func() {
		for {
			select {
			case event := <-watcher.Events:
				if event.Op == fsnotify.Write {
					// Handle when file change
					Build()
				}
			case err := <-watcher.Errors:
				Log(err.Error())
			}
		}
	}()
	var dirs = []string{"source"}
	for _, source := range dirs {
		dirPath := filepath.Join(rootPath, source)
		filepath.Walk(dirPath, func(path string, f os.FileInfo, err error) error {
			if f.IsDir() {
				// Defer watcher.Close()
				if err := watcher.Add(path); err != nil {
					Log(err.Error())
				}
			}
			return nil
		})
	}
}
开发者ID:andywxl,项目名称:ink,代码行数:30,代码来源:main.go


示例8: main

func main() {
	watchr, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	stopChannel := make(chan os.Signal, 1)

	wd, err := os.Getwd()

	if err != nil {
		log.Fatal(err)
	}
	log.Printf("watching directory %s \n", wd)
	err = watchr.Add(wd)
	if err != nil {
		log.Fatal(err)
	}
	signal.Notify(stopChannel, syscall.SIGINT, syscall.SIGTERM)
	for {
		select {
		case ev := <-watchr.Events:
			log.Println("event: ", ev)
		case err := <-watchr.Errors:
			log.Println("error: ", err)
		case <-stopChannel:
			log.Println("Exiting...")
			watchr.Close()
			os.Exit(1)
		}
	}
}
开发者ID:interactiv,项目名称:live-server,代码行数:31,代码来源:live-server.go


示例9: ExampleNewWatcher

func ExampleNewWatcher() {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	defer watcher.Close()

	done := make(chan bool)
	go func() {
		for {
			select {
			case event := <-watcher.Events:
				log.Println("event:", event)
				if event.Op&fsnotify.Write == fsnotify.Write {
					log.Println("modified file:", event.Name)
				}
			case err := <-watcher.Errors:
				log.Println("error:", err)
			}
		}
	}()

	err = watcher.Add("/tmp/foo")
	if err != nil {
		log.Fatal(err)
	}
	<-done
}
开发者ID:CyCoreSystems,项目名称:coreos-kubernetes,代码行数:28,代码来源:example_test.go


示例10: ExampleNewWatcher

func ExampleNewWatcher() {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	defer watcher.Close()

	done := make(chan bool)
	go func() {
		for {
			select {
			case event := <-watcher.Events:
				if event.Op&fsnotify.Create == fsnotify.Create {
					log.Println("added file:", event.Name)
					SortDates()
				}
			case err := <-watcher.Errors:
				log.Println("error:", err)
			}
		}
	}()

	err = watcher.Add("/Users/dhafer/camera")
	if err != nil {
		log.Fatal(err)
	}
	<-done
}
开发者ID:dillonhafer,项目名称:watcher,代码行数:28,代码来源:main.go


示例11: main

func main() {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	defer watcher.Close()

	done := make(chan bool, 1)
	go func() {
		for {
			select {
			case event := <-watcher.Events:
				// fmt.Println("event:", event)
				if event.Op&fsnotify.Write == fsnotify.Write {
					log.Println("modified file:", event.Name)
				}
			case err := <-watcher.Errors:
				log.Println("error:", err)
			}
		}
	}()

	path, _ := os.Getwd()
	err = watcher.Add(path)
	if err != nil {
		log.Fatal(err)
	}
	<-done
}
开发者ID:zchee,项目名称:go-sandbox,代码行数:29,代码来源:go-fsnotify_sample.go


示例12: startWatcher

func startWatcher() synchronization {
	w, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatalf("Could not create watcher: %v", err)
	}

	stop := make(chan struct{})
	newBin := make(chan struct{})

	go func() {
	Loop:
		for {
			select {
			case evt := <-w.Events:
				if evt.Op&fsnotify.Create == fsnotify.Create {
					log.Printf("New binary found. Preparing to shutdown.")
					close(newBin)
				}
			case err := <-w.Errors:
				log.Fatalf("File watcher error occurred: %v", err)
			case <-stop:
				w.Close()
				break Loop
			}
		}
	}()

	w.Add(config.watchDir)
	return synchronization{newBinary: newBin, stopWatcher: stop}
}
开发者ID:yiwang88,项目名称:goazure,代码行数:30,代码来源:main.go


示例13: fileWatcher

func fileWatcher(ch chan string) {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	defer watcher.Close()
	err = watcher.Add(filepath.Dir(targetFileName))
	if err != nil {
		log.Fatal(err)
	}

	for {
		select {
		case event := <-watcher.Events:
			if event.Name != targetFileName {
				continue
			}
			if event.Op&fsnotify.Write != fsnotify.Write &&
				event.Op&fsnotify.Create != fsnotify.Create {
				continue
			}
			log.Println("modified file:", event, event.Name)
			output, _ := getContentString(event.Name)
			ch <- output
		case err := <-watcher.Errors:
			log.Println("error:", err)
		}
	}
}
开发者ID:hhatto,项目名称:ftcat,代码行数:29,代码来源:main.go


示例14: newWatcher

func newWatcher(a *Aster) (*Watcher, error) {
	fsw, err := fsnotify.NewWatcher()
	if err != nil {
		return nil, err
	}
	err = filepath.Walk(".", func(path string, fi os.FileInfo, err error) error {
		if err != nil || !fi.IsDir() {
			return err
		}
		if a.ignore.Match(path) {
			return filepath.SkipDir
		}
		return fsw.Add(path)
	})
	if err != nil {
		fsw.Close()
		return nil, err
	}
	w := &Watcher{
		Watcher: fsw,
		a:       a,
		quit:    make(chan struct{}),
	}
	return w, nil
}
开发者ID:hattya,项目名称:aster,代码行数:25,代码来源:watcher.go


示例15: runViewWatcher

func runViewWatcher(views map[string]*template.Template, funcMap template.FuncMap) {
	viewWatcher, err := fsnotify.NewWatcher()
	if err != nil {
		panic(err)
	}

	viewWatcher.Add("views")
	go func() {
		for {
			select {
			case ev := <-viewWatcher.Events:
				if ev.Op&fsnotify.Write != fsnotify.Write && ev.Op&fsnotify.Chmod != fsnotify.Chmod {
					break
				}
				filename := strings.SplitN(ev.Name, "/", 2)[1]
				for templatesName, _ := range views {
					for _, name := range strings.Split(templatesName, ",") {
						if name == filename {
							updateTemplate(templatesName, views, funcMap)
							break
						}
					}
				}
			case err := <-viewWatcher.Errors:
				log.Printf("view watcher error: %s\n", err)
			}
		}
	}()
}
开发者ID:aoyama-nanami,项目名称:vitali,代码行数:29,代码来源:vitali.go


示例16: NewUFile

// NewUFile 新建文件加载器
// basePath 本地文件的基本路径
// checkInterval 网络文件的最小检测间隔
func NewUFile(basePath string, checkInterval time.Duration) (*UFile, error) {
	basePath = strings.TrimSpace(basePath)
	if basePath == "" {
		basePath = "."
	}

	basePath, err := filepath.Abs(basePath)
	if err != nil {
		return nil, err
	}

	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		return nil, err
	}

	uf := UFile{
		basePath:           basePath,
		dirs:               make(map[string]int),
		files:              make(map[string]*uFile),
		watcher:            watcher,
		checkInterval:      checkInterval,
		ResChan:            make(chan *Res, 2),
		httpLoopAddChan:    make(chan int, 1),
		httpLoopSleepTimer: time.NewTicker(checkInterval),
	}

	go uf.loop()

	return &uf, nil
}
开发者ID:dheminsgi,项目名称:TcpRoute2,代码行数:34,代码来源:ufile.go


示例17: startWatching

func startWatching() {
	if inProduction {
		return
	}
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		fmt.Printf("fsnotify.NewWather() failed with %s\n", err)
		return
	}

	go watchChanges(watcher)

	dirs := store.GetDirsToWatch()
	dirs = append(dirs, "blog_posts")
	for _, dir := range dirs {
		err = watcher.Add(dir)
		if err != nil {
			fmt.Printf("watcher.Add() for %s failed with %s\n", dir, err)
			return
		} else {
			//fmt.Printf("added watching for dir %s\n", dir)
		}
	}
	//watcher.Close()
}
开发者ID:WMAT01,项目名称:web-blog,代码行数:25,代码来源:handler_ws.go


示例18: NewWatcher

func NewWatcher(paths ...string) (changesChan chan string) {
	changesChan = make(chan string)

	doneCount := uint64(0)
	doneChan := make(chan bool)

	for _, p := range paths {
		watcher, err := fsnotify.NewWatcher()

		if err != nil {
			log.Printf("watcher for %q: err %v\n", p, err)
			continue
		}

		err = watcher.Add(p)
		if err != nil {
			log.Printf("%q error: %v\n", p, err)
			watcher.Close()
			continue
		}

		doneCount += 1

		go func(w *fsnotify.Watcher, done chan bool) {
			defer w.Close()

			for {
				select {
				case event := <-w.Events:
					mask := event.Op
					if create(mask) || write(mask) || delete(mask) {
						changesChan <- event.Name
					}

				case err := <-w.Errors:
					if err != nil {
						log.Println("error:", err)
					}
				default:
					continue
				}
			}

			done <- true
		}(watcher, doneChan)
	}

	go func(done chan bool, n uint64) {
		fmt.Println("n", n)
		for i := uint64(0); i < n; i++ {
			<-done
		}

		close(changesChan)
	}(doneChan, doneCount)

	return
}
开发者ID:odeke-em,项目名称:watnot-dev,代码行数:58,代码来源:watnot.go


示例19: Watch

func (fs *FileSystemImporter) Watch(opts *ImportOptions, shutdown chan struct{}) chan error {
	//we watch opts.Dir or if empty, string(fs), or if emtpy, nothing.
	dir := opts.Dir
	if dir == "" {
		dir = fs.WatchDir
	}
	out := make(chan error)
	fini := func() {
		//do nothing.
		<-shutdown
		close(out)
	}
	if dir == "" {
		go fini()
	} else {
		err := os.MkdirAll(dir, 0755)
		if err != nil {
			out <- err
			go fini()
		} else {
			go func() {
				watcher, err := fsnotify.NewWatcher()
				if err != nil {
					out <- err
					fini()
					return
				}
				defer watcher.Close()
				if err = watcher.Add(dir); err != nil {
					fini()
					return
				}
				var wg sync.WaitGroup
				log.Println("Watching Import Directory:", dir)
				for {
					select {
					case ev := <-watcher.Events:
						//log.Println("ImportWatch Event:", ev)
						//probably only need write here...
						if ev.Op == fsnotify.Create || ev.Op == fsnotify.Write {
							//new file created let's have it!
							fs.pendingImport(ev.Name, opts, out, &wg)
						}
					case err := <-watcher.Errors:
						out <- err
					case <-shutdown:
						wg.Wait() //wait for anything happening to happen
						close(out)
						return
					}
				}
			}()
		}
	}

	return out
}
开发者ID:thechriswalker,项目名称:opfs,代码行数:57,代码来源:importer_fs.go


示例20: watchInput

func watchInput() *fsnotify.Watcher {
	watcher, watcherr := fsnotify.NewWatcher()
	fatality(watcherr)

	adderr := watcher.Add("input/")
	fatality(adderr)

	return watcher
}
开发者ID:lcaballero,项目名称:code-exercise,代码行数:9,代码来源:main.go



注:本文中的github.com/go-fsnotify/fsnotify.NewWatcher函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang models.GetUserByName函数代码示例发布时间:2022-05-23
下一篇:
Golang xmlx.Node类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap