Método Node.js fs.watchFile()

El método fs.watchFile() se usa para observar continuamente los cambios en el archivo dado. Tiene un oyente de devolución de llamada que se llama cada vez que se accede al archivo. Tiene un parámetro de opciones opcional que se puede usar para especificar propiedades como el intervalo sobre la frecuencia con la que se debe sondear el archivo y si el proceso continuará mientras se esté viendo el archivo.

El oyente tiene dos argumentos, que es el objeto de estadísticas actual y el objeto de estadísticas anterior. Esto se puede usar para comparar los cambios en el archivo. El tiempo de acceso al archivo modificado se puede encontrar en la propiedad mtime del objeto fs.Stat.

Mientras ve un archivo, si desaparece y reaparece, el estado anterior de la devolución de llamada de desaparición será el mismo que el estado anterior de la devolución de llamada de aparición. Esto sucede cuando se cambia el nombre del archivo y luego se cambia el nombre por segunda vez a su nombre original. También puede suceder cuando el archivo se elimina y luego se restaura.

Sintaxis:

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

Parámetros: este método acepta tres parámetros, como se mencionó anteriormente y se describe a continuación:

  1. nombre de archivo: es una string, un búfer o una URL que denota el nombre del archivo que se va a ver.
  2. opciones: Es un Objeto que se puede utilizar para modificar el comportamiento del método. Es un parámetro opcional. Tiene los siguientes parámetros: 
    • bigint: Es un valor booleano que se utiliza para especificar los valores numéricos del objeto fs.Stat como valores BigInt. El valor predeterminado es falso.
    • persistente: Es un valor booleano que se utiliza para especificar si el proceso debe continuar mientras se esté viendo el archivo. El valor por defecto es verdadero.
    • intervalo: es un número entero que especifica el intervalo de tiempo entre cada sondeo al objetivo. Se especifica en milisegundos. El valor predeterminado es 5007.
  3. listener: Es una función que se invoca cuando se accede o modifica el archivo. 
    • actual: Es un objeto fs.Stats que denota el estado actual del archivo después de haber sido accedido o modificado.
    • anterior: Es un objeto fs.Stats que denota el estado anterior del archivo antes de ser accedido o modificado.

Valor de retorno: Devuelve un objeto fs.StatWatcher cuando la función se llama con éxito.

Los siguientes ejemplos ilustran el método fs.watchFile() en Node.js:
Ejemplo 1: Este ejemplo muestra el uso del método watchFile() junto con sus parámetros.

// 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
);

Producción:

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

Ejemplo 2: Este ejemplo muestra el tiempo de modificación del archivo cuando se cambia el nombre de un archivo y luego se vuelve a cambiar el nombre a su nombre original, lo que provoca la desaparición y reaparición del archivo.

// 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
);

Producción:

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

Referencia: https://nodejs.org/api/fs.html#fs_fs_watchfile_filename_options_listener

Publicación traducida automáticamente

Artículo escrito por sayantanm19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *