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


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


fs.watchFile()方法用于连续监视给定文件上的更改。它具有一个回调监听器,每次访问文件时都会调用该监听器。它具有一个可选的options参数,该参数可用于指定属性,例如必须轮询文件的间隔时间以及只要监视文件就可以继续进行。

侦听器有两个参数,即当前stat对象和上一个stat对象。这可用于比较对文件的更改。修改后的文件访问时间可以从fs.Stat对象的mtime属性中找到。

在观看文件时,如果文件消失并重新出现,则消失回调的previousStatic将与外观回调的previousStat相同。重命名文件然后再次重命名回其原始名称时,会发生这种情况。当文件被删除然后再恢复时,也会发生这种情况。

用法:

fs.watchFile(filename[, options], listener)

参数:此方法接受上述和以下所述的三个参数:



  1. filename:它是一个字符串,缓冲区或URL,表示要监视的文件的文件名。
  2. options:它是一个对象,可用于修改方法的行为。它是一个可选参数。它具有以下参数:
    • bigint:它是一个布尔值,用于将fs.Stat对象的数值指定为BigInt值。默认值为false。
    • persistent:它是一个布尔值,用于指定只要正在监视文件,该过程是否应该继续。默认值是true。
    • interval:它是整数,指定每次轮询到目标之间的时间间隔。以毫秒为单位指定。默认值为5007。
  3. 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




相关用法


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