Manejo de archivos en el nodo.js usando transmisiones | Explicado con ejemplos

Manejo de archivos en el nodo.js usando transmisiones | Explicado con ejemplos
La creación de aplicaciones de la vida real a menudo requiere que el programa pueda interactuar con archivos y sistemas de archivos y construir una aplicación en el entorno NodeJS no es una excepción. Para esta interacción de datos con archivos a través de NodeJs, existe el uso del concepto de transmisiones. Streams en NodeJS no es un concepto solo de nodo, se implementó primero en un sistema operativo basado en UNIX.

Las transmisiones son una forma de leer un archivo bit a bit y pasar pequeñas fragmentos de datos al servidor en lugar de leer un archivo en su conjunto y luego pasar información al servidor como un archivo de big data. Esto puede no parecer un gran problema, pero en realidad, esto ahorra mucho tiempo en el servidor.

Transmisiones en NodeJs

Las transmisiones funcionan como una cola con la ayuda de un búfer, un búfer es un pequeño espacio temporal que se utiliza para almacenar una parte de los datos que se transferirán. El búfer funciona como una cola, si desea transferir una gran cantidad de datos de un punto a otro, entonces el búfer carga una parte de los datos y lo pasa al servidor y espera a que el servidor responda para que pueda descartar ese trozo de datos de su cola. Mientras espera la respuesta del servidor, carga más fragmentos de datos en función del tamaño del búfer establecido por el programador o la aplicación.

Todo este proceso de obtener una fragmentación del archivo, cargarlo en el búfer, y luego analizar ese fragmento con la aplicación \ Server se conoce como Arroyo. En NodeJs, hay tres tipos diferentes de transmisiones

  • La transmisión de solo lectura llamada transmisión legible
  • La transmisión de solo escritura llamada Writable Stream
  • La transmisión de lectura y escritura se llama transmisión dúplex

Leer datos de un archivo a través de flujos en NodeJS

Para comenzar con el tutorial, debe usar el comando en el terminal:

npm init -y

Esto creará un nuevo proyecto de nodo para nosotros junto con el paquete.archivo json en nuestro directorio

Para leer algunos datos de un archivo usando NodeJS, necesitará un archivo con algún texto en él. Por lo tanto, cree un nuevo archivo de texto y coloque algunos "Lorem ipsum" texto usando el generador lorem ipsum.

Copie este texto y colóquelo en el archivo de texto y guarde el archivo de texto:

Como puede ver, el nombre del archivo de texto es "mis datos.TXT". Cree un nuevo archivo JavaScript en el mismo directorio y logrelo "Streamdemo.JS "

Para crear una transmisión de lectura o escritura, necesitamos usar el "FS" módulo que viene como un módulo incorporado del entorno de nodo. Para incluir el FS Módulo en su programa Use las siguientes líneas de código:

var fs = require ("fs");

A continuación, necesitamos crear una transmisión de lectura a partir de nuestro archivo de texto (que se coloca en el mismo directorio que el StreamDemo.archivo js) usando la siguiente línea:

var myReadStream = fs.CreateReadStream (__ Dirname + '/MyData.TXT');

Ahora podemos usar esta variable "Myreadstream" Para realizar una tarea cada vez que recibe una nueva parte de los datos. Use para seguir las líneas de código para imprimir el fragmento en la consola cada vez que nuestra transmisión obtiene una nueva fragmentación:

myreadstream.ON ("Data", Function (Chunk)
consola.log ("El programa ha aceptado el nuevo fragmento");
consola.log (fragmento);
);

Para ejecutar este programa, en el terminal escriba el siguiente comando:

nodo streamdemo

Verá la siguiente salida en su consola:

Como puede ver, pudimos recibir e imprimir los datos de nuestro archivo, sin embargo, los datos que estamos obteniendo en la consola no son los mismos que tenemos en nuestro archivo. Esto se debe a que necesitamos establecer un procedimiento de codificación en la transmisión de lectura. Alter, la línea de la transmisión de lectura para que coincida con la siguiente línea de código:

var myReadStream = fs.CreateReadStream (__ Dirname + '/MyData.txt ', "utf8");

Como puede ver, hemos agregado el "UTF8" codificando a nuestra transmisión. Ahora si volvemos a hacer el uso del "Node StreamDemo" Comando obtenemos el siguiente resultado en nuestro terminal:

Y ahí tienes, estamos leyendo los datos correctos del archivo e imprimiéndolo en la consola

Escribir datos en un archivo a través de flujos en NodeJS

Podemos escribir en un archivo usando la transmisión de escritura en NodeJS que también viene con el módulo "FS". Escribiremos los datos que recibimos en la sección anterior y le escribiremos un nuevo archivo que escribiremosinme.TXT

Para escribir datos en un archivo, vamos a crear un nuevo escribir transmisión Usando la siguiente línea de código:

var mywriteReam = fs.Createwritstream (__ dirname + '/writeinme.txt ', "utf8");

Como puede notar, ya hemos incluido el "UTF8" codificación en la transmisión de escritura. Para escribir el trozo que recibimos del "mis datos" archivo de texto al nuevo archivo vamos a usar el siguiente código:

myreadstream.ON ("Data", Function (Chunk)
consola.log ("El programa ha aceptado el nuevo fragmento");
myWriteReam.escribir (fragmento);
consola.log ("fragmento escrito en el nuevo archivo de texto");
);

Ejecute el programa utilizando el comando:

nodo streamdemo

Obtendrá la siguiente salida:

Como puede ver en el explorador de su editor de código que se creó automáticamente un texto de archivo y si hace doble clic en el "escribirinme " archivo de texto verá los siguientes datos dentro de ese archivo:

Entonces, de la imagen de arriba, está claro que pudimos escribir datos en un archivo utilizando transmisiones

Conclusión

Las transmisiones se utilizan para cargar datos a \ de un archivo de \ en la aplicación bit a bit o en pequeños trozos. Podemos leer y escribir datos utilizando transmisiones que se incluyen en el FS (sistema de archivos) módulo. El módulo del sistema de archivos (FS) viene como un módulo incorporado con NodeJS. Hay tres tipos diferentes de transmisiones, a saber: transmisión legible, transmisión de escritura y flujo dúplex. En esta publicación, implementamos un programa de nodo simple que nos permitió leer los datos de un archivo y escribirlo en un archivo diferente con la ayuda de flujos de datos y buffers.