Kaip dirbti su rašomais srautais Node.js?

Kaip Dirbti Su Rasomais Srautais Node Js



Duomenys per tinklą perduodami tarp šaltinio ir paskirties vietų srautų pavidalu. Siuntėjo pusė vadinama šaltiniu, o gavėjo pusė – paskirties srautu. Naudojant šiuos srautus, duomenys tekstiniu arba garso ar vaizdo formatu gali būti siunčiami ir gaunami su minimalia duomenų nutekėjimo ar praradimo tikimybe.

Šiame vadove paaiškinamas darbas su rašomais srautais Node.js.

Kaip dirbti su rašomais srautais Node.js?

rašomas “ srautas gali būti naudojamas naujiems duomenims į failą įterpti arba kito atsitiktinio srauto turinį. Duomenų konvertavimas arba talpinimas dažniausiai vyksta naudojant „ vamzdis () “ metodas. Šis metodas palengvina turinio konvertavimo ir priskyrimo procesą ir sumažina duomenų susidūrimo tikimybę.







Sintaksė



Rašomas srautas sukuriamas naudojant toliau pateiktą metodą:



fs. sukurtiWriteStream ( „targetFile.ext“ ) ;

Aukščiau pateiktoje sintaksėje „ creatWriteStream() “ iškviečia importuoto “ objektas fs ” modulį, o failas, kuriame bus rašomi duomenys, perduodamas kaip parametras.





Pažvelkime į keletą Node.js įrašomų srautų pavyzdžių.

1 pavyzdys: Kito failo turinio rašymas naudojant rašomą srautą

Toliau pateiktame pavyzdyje atsitiktinis failas siunčiamas per skaitomą srautą, o tada šis failo turinys įdedamas į kitą failą, pasiekiamą rašomame sraute:



buvo fsObj = reikalauti ( 'fs' ) ;

konst DataStream = fsObj. sukurti „ReadStream“. ( „mano naujas failas1.txt“ ) ;

konst writeStream = fsObj. sukurtiWriteStream ( „mano naujas failas2.txt“ ) ;

DataStream. vamzdis ( writeStream ) ;

Aukščiau pateikto kodo aprašymas:

  • Pirma, „ fs “ modulis importuojamas ir jo objektas išsaugomas naujame “ fsObj “ kintamasis.
  • Toliau, padedant „ fasObj “ iškviesti “ sukurtiReadStream() “ metodas, skirtas sukurti skaitomą srautą ir perduoti pasirinktą skaitomą failą kaip jo parametrą.
  • Tada įrašomas srautas sukuriamas naudojant „ CreateWriteStream() “ būdas įrašyti turinį pateiktame faile.
  • Išsaugokite aukščiau nurodytų metodų rezultatus „ DataStream “ ir „ writeStream “ kintamieji.
  • Galiausiai iškvieskite „. vamzdis () “ metodas, po kurio seka “ DataStream “ ir veda su „ writeStream “ kintamieji.

Dabar paleiskite failą, kuriame yra (controlFlow.js), vykdydami toliau pateiktą komandą:

2 pavyzdys: Turinio įrašymas į failą naudojant „stream.write()“ metodą

Šiame pavyzdyje „ rašyti () “ metodas naudojamas duomenims įrašyti į failą, pasiekiamą per rašomąjį srautą:

buvo fsObj = reikalauti ( 'fs' ) ;
konst httpObj = reikalauti ( 'http' ) ;

konst serveLocaly = httpObj. sukurti serverį ( ( prašymas, atsakymas ) => {
bandyti {
konst cellStream = fsObj. sukurtiWriteStream ( „mano naujas failas2.txt“ ) ;
cellStream. rašyti ( „Duomenys, kuriuos reikia įdėti į tikslinį failą“. ) ;
cellStream. galas ( ) ;
atsakymą. galas ( „Duomenys, įrašyti per rašomąjį srautą“ )
}
sugauti ( klaida ) {
konsolė. klaida ( klaida ) ;
}
} ) ;
serveLocaly. klausyk ( 8080 , ( ) => {
konsolė. žurnalas ( „Serveris veikia „Localhost“ prievado numeriu: „8080“ )
) ;

Aukščiau pateikto kodo aprašymas yra toks:

  • Pirmiausia importuokite reikiamą fs “ ir „ http “ modulius ir saugoti jų objektus „ fsObj “ ir „ httpObj “ kintamieji.
  • Tada serveris buvo sukurtas naudojant „ CreateServer() “ metodą ir saugoti šį naujai sukurtą serverį „ serveLocaly “ kintamasis.
  • Tada naudokite „ bandyti “ blokuoti metodo atgalinio iškvietimo funkcijoje ir iškviesti „ CreateWriteStream() “ metodas naudojant „ fsObj “ kintamasis.
  • Perduokite tikslinį failą, į kurį reikia įterpti turinį, šio metodo skliausteliuose ir išsaugokite rezultatą „ cellStream “ kintamasis
  • Pasinaudokite ' rašyti () “ metodą su šiuo kintamuoju ir jo skliausteliuose perduokite netikrą pranešimą, kuris bus įrašytas tiksliniame faile.
  • Uždarykite srautą iškviesdami „ galas() “ metodą ir tinklalapyje parodykite sėkmės pranešimą, iškviesdami „ atsakymas.end() “ metodas. kur “ atsakymą “ yra „“ atšaukimo parametras sukurti serverį “ metodas.
  • Pasinaudokite ' sugauti “ bloką, kad būtų galima apdoroti visas įvykusias klaidas.
  • Galiausiai klausykite arba nustatykite serverį per prievado numerį “ 8080 “ ir parodyti sėkmės pranešimą naudodami atgalinio skambinimo funkciją.

Sugeneruota išvestis rodo, kad pateiktas tekstas buvo parašytas naudojant „ rašyti () “ metodas:

3 pavyzdys: tų pačių duomenų rašymas keliuose failuose

Šiame pavyzdyje vienas failas bus skaitomas iš srauto naudojant „ sukurtiReadStream() “ metodas. Tada skaitytas turinys įrašomas į kelis failus, naudojant „ CreateWriteStream() “ ir „ .pipe() “ metodai:

buvo fsObj = reikalauti ( 'fs' ) ;

konst DataStream = fsObj. sukurti „ReadStream“. ( „mano naujas failas1.txt“ ) ;

konst writeStream1 = fsObj. sukurtiWriteStream ( „mano naujas failas2.txt“ ) ;

konst writeStream2 = fsObj. sukurtiWriteStream ( „usecase.txt“ ) ;

DataStream. vamzdis ( writeStream1 ) ;

DataStream. vamzdis ( writeStream2 ) ;

Aukščiau pateiktame kodo fragmente:

  • sukurtiReadStream() “ iškviečiamas metodas ir failas, kurio turinį reikia perskaityti, perduodamas kaip jo parametras. Šio metodo rezultatas išsaugomas „ DataStream “ kintamasis.
  • Toliau „ CreateWriteStream() “ iškviečiamas metodas ir tikslinis failas perduodamas kaip jo parametras.
  • Tokiu pat būdu antrojo failo kelias taip pat perduodamas kaip įrašomas srautas, o rezultatai saugomi „ writeStream1 “ ir „ writeStream2 “ kintamieji.
  • Po to, naudodami „ .pipe() ' metodu turinys, saugomas ' DataStream kintamasis yra priskirtas writeStream1 “ ir „ writeStream2 “ kintamieji.

Sugeneruota išvestis rodo, kad pateiktas failo turinys buvo įterptas į pateiktus failus per srautus:

Tai viskas apie rašomų srautų veikimą Node.js.

Išvada

Norėdami dirbti su rašomais srautais, naudojamas metodas „ CreateWriteStream() “ iškviečiamas per „ fs “ modulio objektas. Tikslinis failo kelias, kuriuo reikia parašyti turinį, perduodamas kaip jo parametras. Norėdami rašyti turinį iš kito srauto, „ .pipe() “ naudojamas metodas. „ rašyti () “ metodas taip pat naudingas, kai reikia rašyti turinį tiesiai į tikslinį failą. Šis įrašas iliustruoja darbo su rašomais srautais procedūrą.