Tämä opas selittää työskentelyn kirjoitettavien virtojen kanssa Node.js:ssä.
Kuinka työskennellä kirjoitettavien virtojen kanssa Node.js:ssä?
' kirjoitettava ” -virtaa voidaan käyttää lisäämään tiedostoon uutta tietoa tai sijoittamaan toisen satunnaisen streamin sisällön. Tietojen muuntaminen tai sijoittelu tapahtuu useimmiten ' putki() ”menetelmä. Tämä menetelmä tekee sisällön muuntamisesta ja määrittämisestä helpompaa ja vähentää samalla tietojen törmäysten todennäköisyyttä.
Syntaksi
Kirjoitettava tietovirta luodaan käyttämällä alla olevaa menetelmää:
fs. luodaWriteStream ( 'targetFile.ext' ) ;
Yllä olevassa syntaksissa ' creatWriteStream() tuodun kohteen kohde vetoaa ' fs ” -moduuli, ja tiedosto, johon tiedot kirjoitetaan, välitetään parametrina.
Katsotaanpa muutama esimerkki Node.js:n kirjoitettavista virroista.
Esimerkki 1: Toisen tiedoston sisällön kirjoittaminen kirjoitettavan virran avulla
Alla olevassa esimerkissä satunnainen tiedosto lähetetään luettavan virran kautta, ja sitten tämä tiedoston sisältö sijoitetaan toiseen tiedostoon, joka on saatavilla kirjoitettavassa Streamissa:
oli fsObj = vaatia ( 'fs' ) ;
konst dataStream = fsObj. luodaReadStream ( 'uusitiedosto1.txt' ) ;
konst writeStream = fsObj. luodaWriteStream ( 'uusitiedosto2.txt' ) ;
dataStream. putki ( writeStream ) ;
Kuvaus yllä olevasta koodista:
- Ensinnäkin ' fs ' moduuli tuodaan ja sen objekti tallennetaan uuteen ' fsObj ”muuttuja.
- Seuraavaksi '' fasObj ' kutsua ' luoReadStream() ” -menetelmää luettavan virran luomiseen ja välitä valittu luettava tiedosto sen parametriksi.
- Sitten kirjoitettava virta luodaan kutsumalla ' createWriteStream() ” -menetelmää sisällön kirjoittamiseen toimitettuun tiedostoon.
- Tallenna yllä mainittujen menetelmien tulokset ' dataStream ' ja ' writeStream ” muuttujia vastaavasti.
- Lopuksi kutsu '. putki() 'menetelmä, jota seuraa ' dataStream ' ja johtaa '' writeStream ”muuttujia.
Suorita nyt sisältävä tiedosto (controlFlow.js) suorittamalla alla oleva komento:
Esimerkki 2: Sisällön kirjoittaminen tiedostoon 'stream.write()'-menetelmällä
Tässä esimerkissä ' kirjoittaa() ' -menetelmää käytetään tietojen kirjoittamiseen kirjoitettavan virran kautta saatavilla olevaan tiedostoon:
oli fsObj = vaatia ( 'fs' ) ;konst httpObj = vaatia ( 'http' ) ;
konst serveLocaly = httpObj. createServer ( ( pyyntö, vastaus ) => {
yrittää {
konst cellStream = fsObj. luodaWriteStream ( 'uusitiedosto2.txt' ) ;
cellStream. kirjoittaa ( Kohdennettuun tiedostoon sijoitettavat tiedot. ) ;
cellStream. loppu ( ) ;
vastaus. loppu ( 'kirjoitettavan virran kautta kirjoitettu data' )
}
ottaa kiinni ( virhe ) {
konsoli. virhe ( virhe ) ;
}
} ) ;
serveLocaly. kuunnella ( 8080 , ( ) => {
konsoli. Hirsi ( 'Palvelin toimii Localhost-portin numerolla: '8080'' )
) ;
Yllä olevan koodin kuvaus on seuraava:
- Tuo ensin tarvittava ' fs ' ja ' http ' moduuleja ja tallentaa niiden objektit ' fsObj ' ja ' httpObj ” muuttujia vastaavasti.
- Seuraavaksi palvelin on luotu kutsumalla ' createServer() ' -menetelmää ja tallentamalla tämä äskettäin luotu palvelin ' serveLocaly ”muuttuja.
- Käytä sitten ' yrittää ' -lohko menetelmän takaisinkutsutoiminnon sisällä ja kutsu ' createWriteStream() ' menetelmällä ' fsObj ”muuttuja.
- Välitä kohdistettu tiedosto, johon sisältö on lisättävä, tämän menetelmän suluissa ja tallenna tulos ' cellStream ”muuttuja
- Käytä ' kirjoittaa() ” -menetelmää tällä muuttujalla ja välitä sen suluissa valeviesti, joka kirjoitetaan kohdetiedostoon.
- Sulje stream kutsumalla ' loppu () ' -menetelmää ja näytä onnistumisviesti verkkosivulla kutsumalla ' vastaus.end() ”menetelmä. Missä ' vastaus ' on '' -kohdan takaisinsoittoparametri createServer ”menetelmä.
- Käytä ' ottaa kiinni ”-lohko käsitelläksesi mahdollisia virheitä.
- Lopuksi kuuntele tai asenna palvelin portin numeron kautta ' 8080 ” ja näyttää onnistumisviestin takaisinsoittotoiminnon avulla.
Luotu tulos osoittaa, että annettu teksti on kirjoitettu käyttämällä ' kirjoittaa() 'menetelmä:
Esimerkki 3: Samojen tietojen kirjoittaminen useisiin tiedostoihin
Tässä esimerkissä yksi tiedosto luetaan virrasta käyttämällä ' luoReadStream() ”menetelmä. Sitten luettu sisältö kirjoitetaan useisiin tiedostoihin käyttämällä ' createWriteStream() ' ja ' .putki() 'menetelmät:
oli fsObj = vaatia ( 'fs' ) ;konst dataStream = fsObj. luodaReadStream ( 'uusitiedosto1.txt' ) ;
konst writeStream1 = fsObj. luodaWriteStream ( 'uusitiedosto2.txt' ) ;
konst writeStream2 = fsObj. luodaWriteStream ( 'usecase.txt' ) ;
dataStream. putki ( writeStream1 ) ;
dataStream. putki ( writeStream2 ) ;
Yllä olevassa koodinpätkässä:
- ' luoReadStream() ” -menetelmä kutsutaan ja tiedosto, jonka sisältö on luettava, välitetään sen parametriksi. Tämän menetelmän tulos tallennetaan ' dataStream ”muuttuja.
- Seuraavaksi ' createWriteStream() ” -menetelmä kutsutaan ja kohdetiedosto välitetään sen parametrina.
- Samalla tavalla myös toisen tiedoston polku välitetään kirjoitettavana virtana ja tulokset tallennetaan ' writeStream1 ' ja ' writeStream2 ”muuttujia.
- Tämän jälkeen käyttämällä ' .putki() ' -menetelmällä ' dataStream '-muuttuja on määritetty ' writeStream1 ' ja ' writeStream2 ”muuttujia.
Luotu tulos osoittaa, että toimitettu tiedoston sisältö on lisätty annettuihin tiedostoihin virtojen kautta:
Siinä kaikki Node.js:n kirjoitettavien virtojen toiminnasta.
Johtopäätös
Jos haluat työskennellä kirjoitettavien virtojen kanssa, käytä menetelmää ' createWriteStream() ' kutsutaan '' kautta fs ” moduuliobjekti. Kohdennettu tiedostopolku, jolle sisältö on kirjoitettava, välitetään sen parametrina. Jos haluat kirjoittaa sisältöä toisesta virrasta ' .putki() ”menetelmää käytetään. ' kirjoittaa() ” -menetelmä on hyödyllinen myös silloin, kun sisältöä kirjoitetaan suoraan kohdetiedostoon. Tämä viesti on havainnollistanut menettelyä työskennellä kirjoitettavien virtojen kanssa.