fs.watchFile()方法用于连续监视给定文件上的更改。它具有一个回调监听器,每次访问文件时都会调用该监听器。它具有一个可选的options参数,该参数可用于指定属性,例如必须轮询文件的间隔时间以及只要监视文件就可以继续进行。
侦听器有两个参数,即当前stat对象和上一个stat对象。这可用于比较对文件的更改。修改后的文件访问时间可以从fs.Stat对象的mtime属性中找到。
在观看文件时,如果文件消失并重新出现,则消失回调的previousStatic将与外观回调的previousStat相同。重命名文件然后再次重命名回其原始名称时,会发生这种情况。当文件被删除然后再恢复时,也会发生这种情况。
用法:
fs.watchFile(filename[, options], listener)
参数:此方法接受上述和以下所述的三个参数:
- filename:它是一个字符串,缓冲区或URL,表示要监视的文件的文件名。
- options:它是一个对象,可用于修改方法的行为。它是一个可选参数。它具有以下参数:
- bigint:它是一个布尔值,用于将fs.Stat对象的数值指定为BigInt值。默认值为false。
- persistent:它是一个布尔值,用于指定只要正在监视文件,该过程是否应该继续。默认值是true。
- interval:它是整数,指定每次轮询到目标之间的时间间隔。以毫秒为单位指定。默认值为5007。
- listener:访问或修改文件时将调用该函数。
- current:这是一个fs.Stats对象,它表示文件被访问或修改后的当前状态。
- previous:这是一个fs.Stats对象,它表示文件被访问或修改之前的先前状态。
返回值:成功调用该函数后,它将返回一个fs.StatWatcher对象。
以下示例说明了Node.js中的fs.watchFile()方法:示例1:本示例说明了watchFile()方法及其参数的用法。
// Node.js program to demonstrate
// the fs.watchFile() method
// Import the filesystem module
const fs = require('fs');
fs.watchFile(
// The name of the file to watch
"example_file.txt",
// The options parameter is used to
//modify the behaviour of the method
{
// Specify the use of big integers
// in the Stats object
bigint:false,
// Specify if the process should
// continue as long as file is
// watched
persistent:true,
// Specify the interval between
// each poll the file
interval:4000,
},
(curr, prev) => {
console.log("\nThe file was edited");
// Show the time when the file was modified
console.log("Previous Modified Time", prev.mtime);
console.log("Current Modified Time", curr.mtime);
console.log(
"The contents of the current file are:",
fs.readFileSync("example_file.txt", "utf8")
);
}
);
// Make Changes to the file for the first time
fs.writeFileSync("example_file.txt",
"File Contents are Edited");
// Make Changes to the file for the second time
setTimeout(
() => fs.writeFileSync("example_file.txt",
"File Contents are Edited Again"),
5000
);
输出:
The file was edited Previous Modified Time 2020-05-30T07:52:14.587Z Current Modified Time 2020-05-30T08:01:40.948Z The contents of the current file are:File Contents are Edited The file was edited Previous Modified Time 2020-05-30T08:01:40.948Z Current Modified Time 2020-05-30T08:01:45.950Z The contents of the current file are:File Contents are Edited Again
范例2:本示例显示了文件重命名然后重命名回其原始名称,导致文件消失并重新出现时的文件修改时间。
// Node.js program to demonstrate
// the fs.watchFile() method
// Import the filesystem module
const fs = require('fs');
fs.watchFile("example_file.txt", (curr, prev) => {
console.log("\nThe File was modified");
console.log("Previous Modification Time", prev.mtime);
console.log("Current Modification Time", curr.mtime);
});
// 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"),
6000
);
输出:
Previous Modification Time 2020-05-30T08:01:45.950Z Current Modification Time 1970-01-01T00:00:00.000Z The File was modified Previous Modification Time 2020-05-30T08:01:45.950Z Current Modification Time 2020-05-30T08:01:45.950Z
参考: https://nodejs.org/api/fs.html#fs_fs_watchfile_filename_options_listener
相关用法
- Node.js console.timeLog()用法及代码示例
- Node.js GM emboss()用法及代码示例
- Node.js GM sharpen()用法及代码示例
- Node.js GM blur()用法及代码示例
- Node.js GM bordercolor()用法及代码示例
- Node.js GM flip()用法及代码示例
- Node.js GM flop()用法及代码示例
- Node.js GM shave()用法及代码示例
- Node.js GM solarize()用法及代码示例
- Node.js GM spread()用法及代码示例
- Node.js GM border()用法及代码示例
- Node.js GM write()用法及代码示例
- Node.js GM magnify()用法及代码示例
- Node.js GM minify()用法及代码示例
- Node.js GM lower()用法及代码示例
注:本文由纯净天空筛选整理自sayantanm19大神的英文原创作品 Node.js | fs.watchFile() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。