当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js fs.watch()用法及代码示例


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




相关用法


注:本文由纯净天空筛选整理自sayantanm19大神的英文原创作品 Node.js fs.watch() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。