En este artículo, discutiremos la diferencia entre readFile y createReadStream en Nodejs . Ambos son módulos que nos permiten abrir un archivo/secuencia y leer los datos presentes en él.
1. readFile : el módulo fs contiene el método readFile. Se utiliza para leer un archivo llevándolo al búfer. Es un método asíncrono y por ello lee el archivo sin bloquear la ejecución del código. Primero, traemos el módulo fs a nuestra aplicación y luego usamos el método readFile dentro de él.
Sintaxis:
fs.readFile( filename, encoding, callback_function)
Parámetros:
- filename: contiene la ruta al archivo que debe leerse.
- codificación: contiene la codificación del archivo. Si no se especifica ninguna opción, se devuelve el búfer sin formato. El valor predeterminado es ‘utf8’.
- callback_function: es una función que se llama después de leer el archivo y contiene dos parámetros err y data. Si se encuentra algún error, se almacena en err; de lo contrario, el contenido del archivo se almacena en datos.
Valor devuelto: Devuelve el contenido de un archivo.
Ejemplo: En este ejemplo, estamos leyendo el archivo usando el método readFile, el archivo que se leerá es output.txt.
archivo de salida.txt:
This is an output file read from readFile method.
index.js
const fs = require('fs'); fs.readFile('output.txt', 'utf8', (err, data) => { console.log(`Data present in the file is:: ${data}`); }); console.log('Outside readFile method');
Producción:
Outside readFile method Data present in the file is:: This is an output file read from readFile method.
2. createReadStream : el módulo fs contiene la API incorporada (interfaz de programación de aplicaciones) createReadStream. Nos permite abrir un archivo/secuencia y lee los datos presentes en su interior.
Sintaxis:
fs.createReadStream(path, options)
Parámetros:
- ruta: contiene la ruta al archivo que debe leerse. Podría ser la string, URL del búfer.
- options: Es un parámetro opcional. Podemos pasarle una string u objeto.
- Valor devuelto: Devuelve el objeto de ReadObject Stream.
Ejemplo: en este ejemplo, estamos leyendo el nombre del archivo output.txt mediante el método createReadStream.on.
Archivo de salida.txt:
This is an output file read from createReadStream method.
index.js
const fs = require('fs'); const createReader = fs.createReadStream('output.txt'); createReader.on('data', (data) => { console.log(data.toString()); }); console.log('Outside createReader.on method');
Producción:
Outside createReader.on method This is an output file read from createReadStream method.
Diferencia entre readFile y createReadStream:
Leer archivo |
crearReadStream |
---|---|
Lee el archivo en la memoria antes de ponerlo a disposición al usuario |
Lee el archivo en fragmentos según la necesidad del usuario. |
Es más lento debido a la lectura de todo el archivo. | Es más rápido debido a su propiedad de traer trozos. |
No se escalará en caso de demasiadas requests, ya que intentará cargar todos ellos al mismo tiempo. |
Es escalable ya que canaliza el contenido directamente al HTTP objeto de respuesta |
Debido a su propiedad, es más fácil para nodejs manejar la limpieza de la memoria en este caso. |
En este caso, la limpieza de memoria por parte de nodejs no es fácil. |
Publicación traducida automáticamente
Artículo escrito por namancourses y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA