Método Node.js fs.readFileSync()

El método fs.readFileSync() es una interfaz de programación de aplicaciones incorporada del módulo fs que se utiliza para leer el archivo y devolver su contenido. 
En el método fs.readFile(), podemos leer un archivo de forma asíncrona sin bloqueo, pero en el método fs.readFileSync(), podemos leer archivos de forma síncrona, es decir, le estamos diciendo a node.js que bloquee otros archivos paralelos. proceso y hacer el proceso de lectura del archivo actual. Es decir, cuando se llama al método fs.readFileSync(), el programa del Node original deja de ejecutarse y el Node espera a que se ejecute la función fs.readFileSync(); después de obtener el resultado del método, se ejecuta el programa del Node restante.
 

Sintaxis:  

fs.readFileSync( path, options )

Parámetros:  

  • ruta: Toma la ruta relativa del archivo de texto. La ruta puede ser de tipo URL. El archivo también puede ser un descriptor de archivo. Si ambos archivos están en la misma carpeta, solo proporcione el nombre del archivo entre comillas.
  • opciones: es un parámetro opcional que contiene la codificación y el indicador, la codificación contiene la especificación de datos. Su valor predeterminado es nulo , lo que devuelve el búfer sin procesar y el indicador contiene una indicación de las operaciones en el archivo. Su valor predeterminado es ‘r’.

Valor devuelto: este método devuelve el contenido del archivo.
Ejemplo 1:  

  • Contenido del archivo input.txt:
This is some text data which is stored in input.txt file.
  • archivo index.js:

javascript

// Node.js program to demonstrate the 
// fs.readFileSync() method
 
// Include fs module
const fs = require('fs');
  
// Calling the readFileSync() method
// to read 'input.txt' file
const data = fs.readFileSync('./input.txt',
            {encoding:'utf8', flag:'r'});
 
// Display the file data
console.log(data);

Producción: 

This is some text data which is stored in input.txt file.

Ahora, la pregunta es en qué se diferencia este método fs.readFileSync() del método fs.readFile(). Un ejemplo en el que podemos averiguar cuándo usar el método fs.readFileSync() y fs.readFile().
Digamos que hay dos archivos de entrada input1.txt y input2.txt y ambos archivos se guardan en la misma carpeta.
Ejemplo 2:  

  • Contenido del archivo input1.txt:
(1) This is some text data which is stored in input1.txt file.
  • Contenido del archivo input2.txt:
(2) This is some text data which is stored in input2.txt file.
  • archivo index.js:

javascript

// Node.js program to demonstrate the 
// fs.readFileSync() method
 
// Include fs module
const fs = require('fs');
  
// Calling the fs.readFile() method
// for reading file 'input1.txt'
fs.readFile('./input1.txt',
        {encoding:'utf8', flag:'r'},
        function(err, data) {
    if(err)
        console.log(err);
    else
        console.log(data);
});
  
// Calling the fs.readFileSync() method
// for reading file 'input2.txt'
const data = fs.readFileSync('./input2.txt',
              {encoding:'utf8', flag:'r'});
 
// Display data
console.log(data);

Producción: 

(2) This is some text data which is stored in input2.txt file.
(1) This is some text data which is stored in input1.txt file.

Observación: podemos observar que cuando llamamos al método fs.readFile() que lee ‘input1.txt’ y luego llamamos al método fs.readFileSync() que lee el archivo ‘input2.txt’ , pero al ver el salida encontramos que el archivo ‘input2.txt’ se lee primero y luego el archivo ‘input1.txt’ , esto sucede porque cuando el compilador compila el archivo node.js, primero llama al método fs.readFile() que lee un archivo, pero en paralelo continúa compilando el programa restante también, después de eso llama al método fs.readFileSync() que lee otro archivo, al llamar a readFileSync()el compilador detiene otro proceso paralelo (que está aquí leyendo el archivo ‘input1.txt’ del método readFile() ) y continúa el proceso en curso hasta el final, cada vez que el proceso en curso finaliza, el compilador reanuda el proceso restante, por eso observamos que el contenido de ‘input2.txt’ se imprime primero en lugar de ‘input1.txt’ . Entonces, podemos usar el método fs.readFileSync() para tareas como pausar otros procesos paralelos y leer un archivo sincrónicamente .
Referencia: https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options 

Publicación traducida automáticamente

Artículo escrito por arnubop 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 *