📅  最后修改于: 2023-12-03 14:57:10.467000             🧑  作者: Mango
在 Node.js 中,我们可以使用 fs
模块来读取和写入文件,但有时候我们需要实时监控文件的变化并做出相应的处理。这时候就需要使用节点文件更改事件监听器。
我们可以使用 fs.watch()
方法来监听文件更改事件。具体示例如下:
const fs = require('fs');
fs.watch('/path/to/file', (eventType, filename) => {
console.log(`event type: ${eventType}`);
if (filename) {
console.log(`filename: ${filename}`);
} else {
console.log('filename not provided');
}
});
上面的示例中,我们使用 fs.watch()
方法来监听 /path/to/file
文件的变化。当该文件被修改、移动、重命名或删除时,将会触发回调函数,其中 eventType
是一个字符串,表示事件类型(例如 change
、rename
等),filename
是一个可选的字符串,表示发生变化的文件名。
如果需要监听整个文件夹下的文件更改,我们可以使用 fs.watch()
方法来监听该文件夹,代码示例如下:
const fs = require('fs');
fs.watch('/path/to/directory', { recursive: true }, (eventType, filename) => {
console.log(`event type: ${eventType}`);
if (filename) {
console.log(`filename: ${filename}`);
} else {
console.log('filename not provided');
}
});
上面的示例中,我们通过传递 { recursive: true }
参数开启递归监听,以便监听子文件夹中文件的更改。
如果想要取消监听文件或文件夹的更改事件,我们可以使用 fs.unwatchFile()
方法,具体示例如下:
const fs = require('fs');
const watcher = fs.watch('/path/to/file', (eventType, filename) => {
console.log(`event type: ${eventType}`);
if (filename) {
console.log(`filename: ${filename}`);
} else {
console.log('filename not provided');
}
});
// 停止监听文件更改
watcher.close();
上面的示例中,我们使用 fs.watch()
方法开始监听文件更改事件,然后使用 watcher.close()
方法停止监听。
使用节点文件更改事件监听器可以方便地监控文件或文件夹的变化并做出相应的处理,但需要注意的是,该方法可能存在一些误报问题,需要谨慎使用。