Š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ą.