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

时间:2018-12-31 03:34:24

标签: javascript node.js electron fs

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

构建的

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

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

此功能被称为按钮上的事件侦听器的一部分。

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

我想要它,以便每当文件添加到目标目录或将文件更改到目标目录时,应用程序都将继续上传文件。

现在可以使用了,但是我希望用户能够关闭fs.watch,以便他们停止收听文件夹。

我发现了这个堆栈溢出问题:NodeJS: unwatching a file and specifying a listener。但是,这仅处理fs.watchFile,而当我尝试对fs.watch进行相同操作时,此方法将无效。

我不知道该怎么办。

1 个答案:

答案 0 :(得分:2)

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

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

watcher.close()