See juhend selgitab Node.js-is kirjutatavate voogudega töötamist.
Kuidas töötada Node.js-is kirjutatavate voogudega?
' kirjutatav ” voogu saab kasutada uute andmete sisestamiseks faili või paigutada mõne muu juhusliku voo sisu. Andmete teisendamine või paigutus toimub enamasti ' toru () ” meetod. See meetod muudab sisu teisendamise ja määramise protsessi mugavamaks, vähendades samal ajal andmete kokkupõrke tõenäosust.
Süntaks
Kirjutatav voog luuakse järgmise meetodi abil:
fs. looWriteStream ( 'targetFile.ext' ) ;
Ülaltoodud süntaksis on ' creatWriteStream() ' kutsub esile imporditud ' fs ” moodul ja fail, kuhu andmed kirjutatakse, edastatakse parameetrina.
Vaatame paar näidet Node.js-i kirjutatavate voogude kohta.
Näide 1: Teise faili sisu kirjutamine kirjutatava voo abil
Allolevas näites saadetakse juhuslik fail loetava voo kaudu ja seejärel paigutatakse see faili sisu teise faili, mis on saadaval kirjutatavas voos:
oli fsObj = nõuda ( 'fs' ) ;
konst dataStream = fsObj. looReadStream ( 'minuuus fail1.txt' ) ;
konst writeStream = fsObj. looWriteStream ( 'minuuus fail2.txt' ) ;
dataStream. toru ( writeStream ) ;
Ülaltoodud koodi kirjeldus:
- Esiteks, ' fs moodul imporditakse ja selle objekt salvestatakse uude fsObj ” muutuja.
- Järgmiseks abiga ' fasObj ' kutsuge esile ' looReadStream() ” meetod loetava voo loomiseks ja edasta valitud loetav fail selle parameetrina.
- Seejärel luuakse kirjutatav voog, kutsudes esile ' createWriteStream() ” meetodit sisu kirjutamiseks pakutavasse faili.
- Salvestage ülaltoodud meetodite tulemused kausta ' dataStream ” ja „ writeStream ” muutujad.
- Lõpuks kutsuge esile '. toru () ' meetod, millele järgneb ' dataStream ” ja eesotsas „ writeStream ” muutujad.
Nüüd käivitage sisaldav fail (controlFlow.js), käivitades alloleva käsu:
Näide 2: Sisu kirjutamine faili kasutades 'stream.write()' meetodit
Selles näites on ' kirjuta () ” meetodit kasutatakse andmete kirjutamiseks üle kirjutatava voo saadaoleva faili:
oli fsObj = nõuda ( 'fs' ) ;konst httpObj = nõuda ( 'http' ) ;
konst serveLocaly = httpObj. looServer ( ( taotlus, vastus ) => {
proovige {
konst cellStream = fsObj. looWriteStream ( 'minuuus fail2.txt' ) ;
cellStream. kirjutada ( 'Andmed paigutatakse sihitud faili.' ) ;
cellStream. lõpp ( ) ;
vastuseks. lõpp ( 'Andmed, mis on kirjutatud kirjutatava voo kaudu' )
}
püüda ( viga ) {
konsool. viga ( viga ) ;
}
} ) ;
serveLocaly. kuulake ( 8080 , ( ) => {
konsool. logi ( 'Server töötab kohaliku hosti pordi numbril: '8080' )
) ;
Ülaltoodud koodi kirjeldus on järgmine:
- Esmalt importige vajalik ' fs ” ja „ http ” mooduleid ja salvestada nende objektid fsObj ” ja „ httpObj ” muutujad.
- Järgmisena loodi server, kutsudes esile ' looServer() ' meetodit ja salvestage see äsja loodud server ' serveLocaly ” muutuja.
- Seejärel kasutage ' proovige ' blokeerige meetodi tagasihelistamise funktsiooni sees ja käivitage ' createWriteStream() ' meetodit kasutades ' fsObj ” muutuja.
- Edastage sihitud fail, millesse sisu tuleb sisestada, selle meetodi sulgudes ja salvestage tulemus kausta ' cellStream ” muutuja
- Kasutage ' kirjuta () ” meetodit selle muutujaga ja edastage selle sulgudes näiv sõnum, mis kirjutatakse sihitud faili.
- Sulgege voog, kutsudes esile ' lõpp() ' meetodit ja kuvage veebilehel eduteade, kutsudes esile vastus.end() ” meetod. Kus ' vastuseks ' on '' tagasihelistamisparameeter looServer ” meetod.
- Kasutage ' püüda ” plokk, et käsitleda ilmnenud tõrkeid.
- Lõpuks kuulake või seadistage server pordi numbri kaudu ' 8080 ” ja kuvab oma tagasihelistamise funktsiooni abil eduteate.
Loodud väljund näitab, et esitatud tekst on kirjutatud ' kirjuta () ” meetod:
Näide 3: Samade andmete kirjutamine mitmesse faili
Selles näites loetakse voost üks fail, kasutades ' looReadStream() ” meetod. Seejärel kirjutatakse loetud sisu mitme faili peale, kasutades ' createWriteStream() ” ja „ .pipe() ” meetodid:
oli fsObj = nõuda ( 'fs' ) ;konst dataStream = fsObj. looReadStream ( 'minuuus fail1.txt' ) ;
konst writeStream1 = fsObj. looWriteStream ( 'minuuus fail2.txt' ) ;
konst writeStream2 = fsObj. looWriteStream ( 'usecase.txt' ) ;
dataStream. toru ( writeStream1 ) ;
dataStream. toru ( writeStream2 ) ;
Ülaltoodud koodilõigul:
- ' looReadStream() ” meetod käivitatakse ja selle parameetrina edastatakse fail, mille sisu tuleb lugeda. Selle meetodi tulemus salvestatakse kausta ' dataStream ” muutuja.
- Järgmiseks ' createWriteStream() ” kutsutakse välja meetod ja sihitud fail edastatakse selle parameetrina.
- Samal viisil edastatakse ka teise faili tee kirjutatava voona ja tulemused salvestatakse writeStream1 ” ja „ writeStream2 ” muutujad.
- Pärast seda, kasutades ' .pipe() ' meetodil salvestatud sisu dataStream ' muutuja on määratud ' writeStream1 ” ja „ writeStream2 ” muutujad.
Loodud väljund näitab, et pakutud failisisu on voogude kaudu pakutavatesse failidesse sisestatud:
See kõik puudutab Node.js-i kirjutatavate voogude toimimist.
Järeldus
Kirjutatavate voogudega töötamiseks kasutage meetodit ' createWriteStream() ' kutsutakse välja '' kaudu fs ” mooduliobjekt. Sihitud failitee, millele sisu tuleb kirjutada, edastatakse selle parameetrina. Sisu kirjutamiseks teisest voost .pipe() ” meetodit kasutatakse. ' kirjuta () ” meetod on abiks ka siis, kui on vaja sisu otse sihitud faili kirjutada. See postitus on illustreerinud kirjutatavate voogudega töötamise protseduuri.