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:
- nombre de archivo: es una string, un búfer o una URL que denota el nombre del archivo que se va a ver.
- 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.
- 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