Node.js 如何监视文件的修改

Node.js 如何监视文件的修改

在这篇文章中,我们将探讨如何在Node.js中监视文件的修改。有时候,我们可能需要查看特定文件所做的任何更改,并根据该文件执行某种类型的函数。为了监视对文件系统所做的任何更改,我们可以使用Node.js提供的fs模块来解决这个问题。为了监视文件的任何修改,我们可以使用fs.watch()或fs.watchFile()函数。

两者之间的区别是fs.watch()方法可以监视文件和目录,而fs.watchFile()只能用于监视文件的任何更改。

fs.watch() 是fs模块提供的内置应用程序编程接口方法。它定期监视给定目录中文件的任何更改。这个方法返回一个Watcher对象,用于跟踪文件的任何更改。

语法:

fs.watch()

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

fs.watchFile() 方法可以持续监视给定文件的任何更改。它包含一个回调监听器,始终监听文件并通知任何更改。

fs.watchFile()

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

参数: 上述方法接受3个参数,下面进行解释:

  1. filename: 这是一个字符串、缓冲区或URL,表示要监视的文件(fs.watch()中的目录)的名称。
  2. options: 这是一个字符串或对象,用于修改方法的行为。这是一个可选参数,进一步具有以下参数:
    1. persistent: 这是一个布尔值,指定文件被监视时进程是否应该继续执行。默认值为true。
    2. recursive: 这是一个布尔值,指定是否应该监视给定目录的子目录。默认值为false。
    3. encoding: 这是一个字符串值,指定用于将文件名传递给用户的字符编码。
  3. listener: 这是一个字符串值,用于指定使用传递给监听器的文件名的字符编码。
    1. eventType: 这是一个字符串值,指定文件上的不同修改类型。
    2. filename: 正如名称所示,这接受一个字符串或缓冲区输入作为文件名。

以下示例说明在Node.js中对文件进行任何更改或修改时触发的事件:

示例1: 此示例使用 fs.watch() 方法显示文件的任何更改:

// Node.js program to demonstrate the
// fs.watch() method
 
// Importing the filesystem module
const fs = require('fs');
 
fs.watch("example.txt", (eventType, filename) => {
  console.log("The file ", filename, " was modified!");
 
  // We can look for different types of changes on a file 
  // using the event type like: rename, change, etc.
  console.log("It was a ", eventType, " event type.");
});
 
// Changing the contents of the file
setTimeout(
() => fs.writeFileSync("example.txt",
"Welcome to Geeks for Geeks, The file is modified"), 1000);

输出:

The file example.txt was modified!

It was a change event type.

注意: 上述方法不可靠,可能会显示每次修改的多个事件。

示例 2: 该示例显示了使用 fs.watchFile() 方法对文件进行的任何更改:

// Node.js program to demonstrate
// the fs.watchFile() method
 
// Importing the filesystem module
const fs = require('fs');
 
fs.watchFile("example.txt", {
 
  // Passing the options parameter
  bigint: false,
  persistent: true,
  interval: 1000,
}, (curr, prev) => {
  console.log("\nThe file was edited");
 
  // Time when file was updated
  console.log("File was modified at: ", prev.mtime);
  console.log("File was again modified at: ", curr.mtime);
  console.log(
    "File Content Updated: ",
    fs.readFileSync("example.txt", "utf8")
  );
});
 
// Make Changes to the file for the first time
fs.writeFileSync("example.txt",
"Welcome to Geeks for Geeks");
 
// Make Changes to the file for the second time
setTimeout(
() => fs.writeFileSync("example.txt",
    "File is Edited Again!!!"),
3000
);

输出:

Node.js 如何监视文件的修改

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程