Node.js fs.watch()方法
fs.watch()方法是 fs 模块的内置应用编程接口,用于持续观察给定文件或目录中的变化。它返回一个 fs。FSWatcher 对象,可用于跟踪文件中的更改。
它有一个可选的侦听器作为第三个参数,可用于获取发生的更改。这个侦听器有两个参数,一个是被修改的文件或目录的名称,另一个是修改的类型。在查看文件时,如果文件消失并重新出现,则会发出“重命名”事件,如果文件内容被修改,则会发出“更改”事件。
注意:此方法不可靠,每次修改可能会在监听器中显示多个事件。
语法:
fs.watch( filename[, options][, listener] )
参数:该方法接受三个参数,如上所述,如下所述:
- 文件名:它是一个字符串、缓冲区或网址,表示要监视的文件或目录的名称。
- 选项:是可以用来修改方法行为的字符串或对象。这是一个可选参数。它具有以下参数:
- 持久:是一个布尔值,用于指定只要文件被监视,进程是否应该继续。默认值为真。
- 递归:是一个布尔值,用于指定是否应该监视给定目录的所有子目录。默认值为假。
- 编码:它是一个字符串,指定传递给侦听器的文件名所使用的字符编码。
- 监听器:是文件被访问或修改时调用的函数。这是一个可选参数。
- 事件类型:它是一个字符串,指定文件经历的修改类型。
- 文件名:它是一个字符串或缓冲区,指定触发事件的文件名。
返回值:返回一个 fs。成功调用函数时的 StatWatcher 对象。
下面的例子说明了 Node.js 中的 fs.watch()方法:
示例 1: 此示例显示了 watch()方法在文件上的用法。
JavaScript
// Node.js program to demonstrate the
// fs.watch() method
// Import the filesystem module
const fs = require('fs');
fs.watch("example_file.txt", (eventType, filename) => {
console.log("\nThe file", filename, "was modified!");
console.log("The type of change was:", eventType);
});
// Renaming the file to a new name
setTimeout(
() => fs.renameSync("example_file.txt", "new_file.txt"),
1000
);
// Renaming the file back to its old name
setTimeout(
() => fs.renameSync("new_file.txt", "example_file.txt"),
2000
);
// Changing the contents of the file
setTimeout(
() => fs.writeFileSync("example_file.txt",
"The file is modified"), 3000
);
输出:注意这个方法不可靠,每次修改可能会显示多个事件。
The file example_file.txt was modified!
The type of change was: rename
The file example_file.txt was modified!
The type of change was: rename
The file example_file.txt was modified!
The type of change was: change
示例 2: 此示例显示了 watch()方法在目录中的用法。
JavaScript
// Node.js program to demonstrate the
// fs.watch() method
// Import the filesystem module
const fs = require('fs');
fs.watch("ex_dir", (eventType, filename) => {
console.log("\nThe file", filename, "was modified!");
console.log("The type of change was:", eventType);
});
// Changing the contents of a file
setTimeout(
() => fs.writeFileSync("ex_dir/ex1.txt",
"The file is modified"), 1000
);
// Renaming a file to a new name
setTimeout(
() => fs.renameSync("ex_dir/ex2.txt",
"ex_dir/new_ex2.txt"), 2000
);
输出:注意这个方法不可靠,每次修改可能会显示多个事件。
The file ex1.txt was modified!
The type of change was: change
The file ex2.txt was modified!
The type of change was: rename
The file new_ex2.txt was modified!
The type of change was: rename
参考:https://nodejs . org/API/fs . html # fs _ fs _ watch _ filename _ options _ listener
版权属于:月萌API www.moonapi.com,转载请注明出处