Gestione dei file in nodo.JS usando flussi | Spiegato con esempi

Gestione dei file in nodo.JS usando flussi | Spiegato con esempi
La costruzione di applicazioni di vita reale spesso richiede che il programma sia in grado di interagire con file e file system e creare un'applicazione nell'ambiente Nodejs non fa eccezione. Per questa interazione dei dati con i file tramite Nodejs, c'è l'uso del concetto di flussi. I flussi in Nodejs non sono un concetto solo per nodi, è stato implementato per la prima volta in un sistema operativo basato su Unix.

I flussi sono un modo per leggere un file bit per bit e passare piccoli blocchi di dati sul server piuttosto che leggere un file nel suo insieme e quindi passare informazioni sul server come un file di big data. Questo potrebbe non sembrare un grosso problema, ma in realtà questo risparmia molto tempo sul server.

Flussi in nodejs

I flussi funzionano come una coda con l'aiuto di un buffer, un buffer è un piccolo spazio temporaneo che viene utilizzato per archiviare un pezzo di dati che deve essere trasferito. Il buffer funziona come una coda, se si desidera trasferire una grande quantità di dati da un punto a un altro, quindi il buffer carica un pezzo di dati e li passa al server e attende che il server possa rispondere in modo che possa scartare Quel pezzo di dati dalla sua coda. Mentre attende la risposta del server, carica più blocchi di dati in base alle dimensioni del buffer impostato dal programmatore o dall'applicazione.

L'intero processo per ottenere un pezzo dal file, caricarlo nel buffer e quindi analizzare quel pezzo all'applicazione \ server è noto come a Flusso. In Nodejs, ci sono tre diversi tipi di flussi

  • Il flusso di sola lettura chiamato il flusso leggibile
  • Il flusso di soli scritti chiamato Stream Writeble
  • Il flusso di lettura e scrittura si chiama Duplex Stream

Leggere i dati da un file tramite flussi in nodejs

Per iniziare con il tutorial, è necessario utilizzare il comando nel terminale:

NPM init -y

Questo creerà un nuovo progetto di nodo per noi insieme al pacchetto.file json nella nostra directory

Per leggere alcuni dati da un file utilizzando Nodejs, avrai bisogno di un file con un po 'di testo. Pertanto, crea un nuovo file di testo e posiziona un po ' "Lorem ipsum" testo usando il generatore di ipsum di Lorem.

Copia questo testo e posizionalo nel file di testo e salva il file di testo:

Come puoi vedere, il nome del file di testo è "i miei dati.TXT". Crea un nuovo file JavaScript nella stessa directory e nominalo “Streamdemo.JS "

Per creare un flusso di lettura o scrittura dobbiamo usare il "FS" Modulo che arriva come un modulo integrato dell'ambiente nodo. Per includere il fs Modulo nel programma Utilizzare le seguenti righe di codice:

var fs = requisite ("fs");

Successivamente, dobbiamo creare un flusso di lettura dal nostro file di testo (che viene inserito nella stessa directory del StreamDemo.File JS) Utilizzo della riga seguente:

var myreadstream = fs.CreaTeaterEadStream (__ Dirname + '/MyData.TXT');

Ora possiamo usare questa variabile "MyReadstream" Per eseguire un'attività ogni volta che riceve un nuovo pezzo di dati. Utilizzare per seguire le righe di codice per stampare il pezzo sulla console ogni volta che il nostro flusso ottiene un nuovo pezzo:

MyReadstream.on ("data", function (chunk)
console.log ("New Chunk è stato accettato dal programma");
console.log (chunk);
);

Per eseguire questo programma, nel tipo terminale il seguente comando:

nodo Streamdemo

Vedrai il seguente output nella tua console:

Come puoi vedere, siamo stati in grado di ricevere e stampare i dati dal nostro file, tuttavia i dati che stiamo ottenendo sulla console non sono gli stessi di quelli che abbiamo nel nostro file. Questo perché dobbiamo impostare una procedura di codifica nel flusso di lettura. Altera, la riga del flusso di lettura per abbinare la seguente riga di codice:

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

Come puoi vedere, abbiamo aggiunto il "UTF8" codifica nel nostro flusso. Ora se riesaminiamo usando il "Node Streamdemo" comando otteniamo il seguente risultato sul nostro terminale:

E eccoti, stiamo leggendo i dati corretti dal file e li stavi stampando sulla console

Scrivere dati in un file tramite flussi in nodejs

Possiamo scrivere in un file usando il flusso di scrittura in Nodejs che viene fornito anche con il modulo "FS". Scriveremo i dati che abbiamo ricevuto nella sezione precedente e lo scriveremo un nuovo file che scrivremo.TXT

Per scrivere dati a un file creeremo un nuovo Scrivi il flusso Utilizzando la seguente riga di codice:

var mywriteStream = fs.CreateWriteStream (__ Dirname + '/WriteInme.txt ', "utf8");

Come puoi notare, abbiamo già incluso il "UTF8" codifica nel flusso di scrittura. Per scrivere il pezzo che riceviamo dal "i miei dati" File di testo nel nuovo file Useremo il seguente codice:

MyReadstream.on ("data", function (chunk)
console.log ("New Chunk è stato accettato dal programma");
MyWriteStream.Scrivi (chunk);
console.log ("Chunk scritto al nuovo file di testo");
);

Eseguire il programma utilizzando il comando:

nodo Streamdemo

Otterrai il seguente output:

Come puoi vedere nell'Explorer del tuo editor di codice che un nuovo testo di file è stato creato automaticamente e se fare doppio clic su "writeinme " file di testo vedrai i seguenti dati all'interno di quel file:

Quindi, dall'immagine sopra è chiaro che siamo stati in grado di scrivere dati a un file usando flussi

Conclusione

I flussi vengono utilizzati per caricare i dati a da un file di \ sulla applicazione bit per bit o in piccoli pezzi. Possiamo leggere e scrivere i dati utilizzando flussi inclusi nel FS (file system) modulo. Il modulo File System (FS) è disponibile come un modulo integrato con NodeJS. Esistono tre diversi tipi di flussi, vale a dire: flusso leggibile, flusso scrivibile e flusso duplex. In questo post, abbiamo implementato un semplice programma di nodi che ci ha permesso di leggere i dati da un file e scriverli a un file diverso con l'aiuto di flussi di dati e buffer.