首页 > 解决方案 > 如何关闭文件夹的 fs.watch 监听器

问题描述

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

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

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

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

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

我想要它,以便应用程序在将文件添加或更改到目标目录时不断上传文件。

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

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

我不知道我需要做什么。

标签: javascriptnode.jselectronfs

解决方案


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

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

然后,当您完成观察者后,您会调用:

watcher.close()

推荐阅读