En esta publicación, vamos a explorar cómo monitorear un archivo en busca de modificaciones en Node.js. A veces, es posible que necesitemos ver los cambios realizados en el archivo específico y ejecutar algún tipo de función sobre la base de ese archivo. Para ver los cambios que se realizan en el sistema de archivos, podemos usar el módulo fs proporcionado por node.js que proporciona una solución aquí. Para monitorear un archivo de cualquier modificación, podemos usar la función fs.watch() o fs.watchFile().
La diferencia entre los dos es que el método fs.watch() puede ver tanto los archivos como los directorios, mientras que fs.watchFile solo está diseñado para ver cualquier cambio en el archivo.
El fs.watch() es un método de interfaz de programación de aplicaciones incorporado proporcionado por el módulo fs. Esto observa regularmente cualquier cambio en el archivo en el directorio dado. Este método devuelve un objeto Watcher que se usa básicamente para rastrear cualquier cambio en el archivo.
Sintaxis:
fs.watch( filename[, options][, listener] )
El método fs.watchFile() observa continuamente cualquier cambio en el archivo dado. Contiene un oyente de devolución de llamada que siempre escucha el archivo e informa de cualquier cambio.
fs.watchFile(filename[, options], listener)
Parámetros: El método anterior acepta 3 parámetros que se explican a continuación:
- nombre de archivo: Esta es una string, un búfer o una URL que representa el nombre del archivo (Directorio en fs.watch()) que se va a observar.
- opciones: Esta es una string o un objeto que se utiliza para modificar el comportamiento del método. Este es un parámetro opcional. Además tiene los siguientes parámetros:
- persistente: Este es un valor booleano que especifica si el proceso debe continuar o no mientras se está viendo el archivo. El valor por defecto es verdadero.
- recursivo: Este es un valor booleano que especifica si los subdirectorios del directorio dado deben ser observados o no. El valor predeterminado es falso.
- codificación: este es un valor de string que especifica la codificación de caracteres que debe usarse para pasar el nombre de archivo al usuario.
- oyente: este es un valor de string que especifica la codificación de caracteres que utiliza el nombre de archivo que se pasa al oyente.
- eventType: este es un valor de string que especifica los diferentes tipos de modificación en el archivo.
- nombre de archivo: como sugiere el nombre, esto toma una string o una entrada de búfer para el nombre de archivo.
Los siguientes ejemplos ilustran el evento desenstringnte que se activa cuando se realizan cambios o modificaciones en el archivo en Node.js:
Ejemplo 1: este ejemplo muestra cualquier cambio en el archivo con la ayuda del método fs.watch() :
Javascript
// 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);
Producción:
The file example.txt was modified! It was a change event type.
Nota: El método anterior no es confiable y puede mostrar múltiples eventos para cada modificación. que este método no es confiable y puede mostrar múltiples eventos para cada modificación.
Ejemplo 2: este ejemplo muestra cualquier cambio en el archivo con la ayuda del método fs.watchFile() :
Javascript
// 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 );
Producción: