如何关闭文件夹的 fs.watch 监听器
Posted
技术标签:
【中文标题】如何关闭文件夹的 fs.watch 监听器【英文标题】:How to close fs.watch listener for a folder 【发布时间】:2019-05-27 17:50:52 【问题描述】:我有一个应用程序,允许用户将本地文件夹的内容连续上传到云中的文件夹。该应用程序是使用electron
和node.js
构建的
所以我需要帮助的代码是这样的:
fs.watch(getHomeDirectory(), (eventname, filename) =>
upload(
filename,
`$getHomeDirectory()/$filename`
);
)
此函数作为按钮上的事件侦听器的一部分调用。
有一个 getter getHomeDirectory
函数获取用户的文件夹目录,然后是 upload
函数上传在该文件夹中添加或更改的文件。
我想要它,以便应用程序在将文件添加或更改到目标目录时不断上传文件。
现在它可以工作,但我希望用户能够关闭fs.watch
,以便他们停止收听该文件夹。
我发现了这个堆栈溢出问题:NodeJS: unwatching a file and specifying a listener。然而,这只适用于fs.watchFile
,当我尝试为fs.watch
做同样的事情时,它不起作用。
我不知道我需要做什么。
【问题讨论】:
你看过https://nodejs.org/docs/latest/api/fs.html#fs_event_close 【参考方案1】:fs.watch(...)
返回一个fs.FSWatcher 的实例,它有一个.close()
方法。因此,如果您想取消观看,可以:
const watcher = fs.watch(getHomeDirectory(), (eventname, filename) =>
// your code here
)
然后,当你完成了观察者,你会调用:
watcher.close()
【讨论】:
我不确定这是否是正确的答案,因为watcher=...
是异步的,watcher.close()
将立即关闭
我已经更新了答案,以更清楚地说明不应立即调用 watcher.close()
。以上是关于如何关闭文件夹的 fs.watch 监听器的主要内容,如果未能解决你的问题,请参考以下文章