Hoe te werken met beschrijfbare streams in Node.js?

Hoe Te Werken Met Beschrijfbare Streams In Node Js



De gegevens worden in de vorm van stromen over het netwerk tussen bron- en bestemmingsplaatsen overgedragen. De zenderzijde wordt de bron genoemd en de ontvangerzijde wordt weergegeven als de bestemmingsstroom. Met behulp van deze streams kunnen de gegevens in tekstvorm of audio- of videoformaat worden verzonden en ontvangen met minimale kans op gegevenslekken of -verlies.

In deze handleiding wordt uitgelegd hoe u met beschrijfbare streams in Node.js kunt werken.

Hoe te werken met beschrijfbare streams in Node.js?

De ' beschrijfbaar ”stream kan worden gebruikt om nieuwe gegevens in het bestand in te voegen of om de inhoud van een andere willekeurige stream te plaatsen. De dataconversie of plaatsing gebeurt meestal met behulp van de “ pijp() methode. Deze methode maakt het proces van het converteren en toewijzen van inhoud gemakkelijker en verkleint tegelijkertijd de kans op botsingen tussen gegevens.







Syntaxis



De beschrijfbare stream wordt gemaakt door de onderstaande methode aan te roepen:



fs. createWriteStream ( 'doelbestand.ext' ) ;

In de bovenstaande syntaxis is de “ creatWriteStream() ” wordt aangeroepen door het object van de geïmporteerde “ fs ”-module, en het bestand waarin de gegevens zullen worden geschreven, wordt als parameter doorgegeven.





Laten we een paar voorbeelden bekijken van beschrijfbare streams in Node.js.

Voorbeeld 1: De inhoud van een ander bestand schrijven met behulp van een beschrijfbare stream

In het onderstaande voorbeeld wordt het willekeurige bestand via de leesbare stream verzonden en vervolgens wordt deze bestandsinhoud in een ander bestand geplaatst dat beschikbaar is in de beschrijfbare stream:



was fsObj = vereisen ( 'fs' ) ;

const data stroom = fsObj. maakReadStream ( 'mijnnieuwebestand1.txt' ) ;

const schrijfStream = fsObj. createWriteStream ( 'mijnnieuwebestand2.txt' ) ;

data stroom. pijp ( schrijfStream ) ;

Beschrijving van de bovenstaande code:

  • Eerst de ' fs ”-module wordt geïmporteerd en het object ervan wordt opgeslagen in de nieuwe “ fsObj Variabel.
  • Vervolgens, met behulp van “ fasObj 'roep de' createReadStream() ”-methode voor het maken van een leesbare stream en geef het geselecteerde leesbare bestand door als parameter.
  • Vervolgens wordt de beschrijfbare stroom gemaakt door het aanroepen van de “ createWriteStream() ”-methode om de inhoud op het opgegeven bestand te schrijven.
  • Bewaar de resultaten van de hierboven aangeroepen methoden in de “ data stroom ' En ' schrijfStream ”variabelen respectievelijk.
  • Roep ten slotte de “. pijp() 'methode gevolgd door' data stroom ' en leidt met de ' schrijfStream ' variabelen.

Voer nu het bevattende bestand (controlFlow.js) uit door de onderstaande opdracht uit te voeren:

Voorbeeld 2: De inhoud naar een bestand schrijven met behulp van de “stream.write()”-methode

In dit voorbeeld is de “ schrijven() De methode wordt gebruikt om gegevens te schrijven over het bestand dat beschikbaar is via de beschrijfbare stream:

was fsObj = vereisen ( 'fs' ) ;
const httpObj = vereisen ( 'http' ) ;

const serveLocaly = httpObj. creëerServer ( ( aanvraag antwoord ) => {
poging {
const celStream = fsObj. createWriteStream ( 'mijnnieuwebestand2.txt' ) ;
celStream. schrijven ( 'Gegevens die in het beoogde bestand moeten worden geplaatst.' ) ;
celStream. einde ( ) ;
antwoord. einde ( 'Gegevens geschreven via beschrijfbare stroom' )
}
vangst ( fout ) {
troosten. fout ( fout ) ;
}
} ) ;
serveLocaly. luisteren ( 8080 , ( ) => {
troosten. loggen ( 'Server draait op Localhost-poortnummer: '8080' ' )
) ;

De beschrijving van de bovenstaande code is als volgt:

  • Importeer eerst de vereiste “ fs ' En ' http ”-modules en sla hun objecten op in “ fsObj ' En ' httpObj ”variabelen respectievelijk.
  • Vervolgens is de server aangemaakt door het aanroepen van de “ createServer() ”-methode en het opslaan van deze nieuw gemaakte server in een “ serveLocaly Variabel.
  • Gebruik dan een “ poging ” blok binnen de methode callback-functie en roep de “ createWriteStream() ”-methode met behulp van de “ fsObj Variabel.
  • Geef het beoogde bestand waarin de inhoud moet worden ingevoegd, binnen dit haakje van de methode door en sla het resultaat op in de map “ celStream Variabel
  • Maak gebruik van de “ schrijven() ” met deze variabele en geef een dummy-bericht tussen haakjes door dat in het beoogde bestand zal worden geschreven.
  • Sluit de stream door het aanroepen van de “ einde() '-methode en geef een succesbericht weer op de webpagina door de ' reactie.end() methode. Waar ' antwoord ' is de callback-parameter van de ' creëerServer methode.
  • Maak gebruik van de “ vangst ”-blok om eventuele opgetreden fouten af ​​te handelen.
  • Luister ten slotte of stel de server in via het poortnummer “ 8080 ' en geef het succesbericht weer met behulp van de terugbelfunctie.

De gegenereerde uitvoer laat zien dat de opgegeven tekst is geschreven met behulp van de “ schrijven() methode:

Voorbeeld 3: Dezelfde gegevens naar meerdere bestanden schrijven

In dit voorbeeld wordt een enkel bestand uit de stream gelezen met behulp van de “ createReadStream() methode. Vervolgens wordt de gelezen inhoud over meerdere bestanden geschreven met behulp van de “ createWriteStream() ' En ' .pijp() ” methoden:

was fsObj = vereisen ( 'fs' ) ;

const data stroom = fsObj. maakReadStream ( 'mijnnieuwebestand1.txt' ) ;

const schrijfStream1 = fsObj. createWriteStream ( 'mijnnieuwebestand2.txt' ) ;

const schrijfStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;

data stroom. pijp ( schrijfStream1 ) ;

data stroom. pijp ( schrijfStream2 ) ;

In het bovenstaande codefragment:

  • De ' createReadStream() De methode wordt aangeroepen en het bestand waarvan de inhoud moet worden gelezen, wordt als parameter doorgegeven. Het resultaat van deze methode wordt opgeslagen in de “ data stroom Variabel.
  • Vervolgens wordt de “ createWriteStream() ”-methode wordt aangeroepen en het beoogde bestand wordt doorgegeven als parameter.
  • Op dezelfde manier wordt het pad voor het tweede bestand ook als beschrijfbare stream doorgegeven en worden de resultaten opgeslagen in “ schrijfStream1 ' En ' schrijfStream2 ' variabelen.
  • Daarna wordt met behulp van de “ .pijp() ”-methode de inhoud opgeslagen in de “ data stroom ”variabele wordt toegewezen aan de “ schrijfStream1 ' En ' schrijfStream2 ' variabelen.

De gegenereerde uitvoer laat zien dat de geleverde bestandsinhoud via de streams in de verstrekte bestanden is ingevoegd:

Dat gaat allemaal over de werking van beschrijfbare streams in Node.js.

Conclusie

Om met beschrijfbare streams te werken, is de methode van “ createWriteStream() ' wordt aangeroepen via de ' fs ” module-object. Het beoogde bestandspad waarop de inhoud moet worden geschreven, wordt als parameter doorgegeven. Om de inhoud van een andere stream te schrijven, moet de “ .pijp() ’-methode wordt gebruikt. De ' schrijven() ”-methode is ook handig als het gaat om het rechtstreeks schrijven van inhoud in het beoogde bestand. Dit bericht heeft de procedure geïllustreerd voor het werken met beschrijfbare streams.