fs.watch()方法是fs模块的内置应用程序编程接口,用于连续监视给定文件或目录中的更改。它返回一个fs.FSWatcher对象,该对象可用于跟踪文件中的更改。
它具有一个可选的侦听器作为第三个参数,可用于获取发生的更改。该侦听器有两个参数,一个是修改的文件或目录的名称,另一个是修改的类型。观看文件时,如果文件消失并重新出现,则发出‘rename’事件,如果文件内容被修改,则发出‘change’事件。
注意:此方法不可靠,并且每次修改都会在侦听器中显示多个事件。
用法:
fs.watch( filename[, options][, listener] )
参数:此方法接受上述和以下所述的三个参数:
- filename:它是一个字符串,Buffer或URL,表示要监视的文件或目录的名称。
- options:它是可用于修改方法行为的字符串或对象。它是一个可选参数。它具有以下参数:
- persistent:它是一个布尔值,用于指定只要正在监视文件,该过程是否应继续。默认值是true。
- recursive:它是一个布尔值,用于指定是否应监视给定目录的所有子目录。默认值为false。
- encoding:它是一个字符串,它指定用于传递给侦听器的文件名的字符编码。
- listener:它是在访问或修改文件时调用的函数。它是一个可选参数。
- eventType:它是一个字符串,它指定文件进行的修改的类型。
- filename:它是一个字符串或Buffer,它指定触发事件的文件名。
返回值:成功调用该函数后,它将返回一个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
相关用法
- Node.js console.timeLog()用法及代码示例
- Node.js GM segment()用法及代码示例
- Node.js GM roll()用法及代码示例
- Node.js GM orderedDither()用法及代码示例
- Node.js GM drawArc()用法及代码示例
- Node.js GM shave()用法及代码示例
- Node.js GM drawBezier()用法及代码示例
- Node.js GM drawPolyline()用法及代码示例
- Node.js GM resize()用法及代码示例
- Node.js GM raise()用法及代码示例
- Node.js GM paint()用法及代码示例
- Node.js GM emboss()用法及代码示例
- Node.js GM quality()用法及代码示例
- Node.js GM solarize()用法及代码示例
- Node.js GM motionBlur()用法及代码示例
注:本文由纯净天空筛选整理自sayantanm19大神的英文原创作品 Node.js fs.watch() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。