代码之家  ›  专栏  ›  技术社区  ›  Grant Herman

如何关闭文件夹的fs.watch侦听器

  •  0
  • Grant Herman  · 技术社区  · 6 年前

    我有一个应用程序,允许用户连续地将本地文件夹的内容上传到云中的一个文件夹。应用程序是用 electron node.js

    所以我需要帮助的代码是:

      fs.watch(getHomeDirectory(), (eventname, filename) => {
       upload(
        filename,
        `${getHomeDirectory()}/${filename}`
      );
    })
    

    此函数作为按钮上的事件侦听器的一部分调用。

    有一个能手, getHomeDirectory ,函数获取文件夹的用户目录,然后 upload 用于上载在该文件夹中添加或更改的文件的函数。

    我希望这样,应用程序只要在目标目录中添加或更改文件,就可以继续上载文件。

    现在它可以工作,但我希望用户能够关闭 fs.watch 所以他们停止监听文件夹。

    我发现这个堆栈溢出问题: NodeJS: unwatching a file and specifying a listener . 然而,这只涉及 fs.watchFile 当我试图做同样的事情 FS手表 它不起作用。

    我不知道该怎么做。

    1 回复  |  直到 6 年前
        1
  •  1
  •   kevin.groat Peeech    6 年前

    fs.watch(...) 返回的实例 fs.FSWatcher ,它有一个 .close() 方法。因此,如果您想取消监视,可以:

    const watcher = fs.watch(getHomeDirectory(), (eventname, filename) => {
      // your code here
    })
    
    watcher.close()