Šiame vadove bus paaiškintas skaitomų srautų naudojimas Node.js.
Kaip naudoti skaitomus srautus Node.js?
„ Skaitomas ' srautai sukuriami naudojant ' sukurtiReadStream() “, o nuskaityti duomenys gali būti rodomi tinklalapyje, sukuriant vietinį serverį. Renginio klausytojai padedami „ ant () “ metodus taip pat galima pridėti prie skaitomų srautų, kad būtų rodomi pranešimai arba atliekami konkretūs veiksmai, kai failo skaitymas prasideda arba baigiasi.
Peržiūrėkite pavyzdį praktiniam demonstravimui.
Pavyzdys: Turinio skaitymas ir rodymas serveryje naudojant skaitomus srautus
Šiame pavyzdyje pateikto failo turinys skaitomas ir rodomas žiniatinklio naršyklėje:
konst fsObj = reikalauti ( 'fs' ) ;
konst httpObj = reikalauti ( 'http' ) ;
konst vietinis serveris = httpObj. sukurti serverį ( ( prašymas, atsakymas ) => {
bandyti {
// Tikslinis failas skaityti
konst DataStream = fsObj. sukurti „ReadStream“. ( „usecase.txt“ ) ;
// Nukreipkite failą į atsakymą
DataStream. vamzdis ( atsakymą ) ;
} sugauti ( klaidų ) {
konsolė. klaida ( klaidų ) ;
}
} ) ;
vietinis serveris. 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į „ vietinis serveris “ kintamasis.
- Tada naudokite „ bandyti “ blokuoti metodo atgalinio iškvietimo funkcijoje ir iškviesti „ sukurtiReadStream() “ metodas naudojant „ fsObj “ kintamasis.
- Perduokite tikslinį failo turinį, kurį reikia perskaityti šio metodo skliausteliuose ir išsaugokite rezultatą „ DataStream “ kintamasis.
- Įdėkite ' DataStream ' kintamasis į ' .pipe() “ būdas išsiųsti atsakymą.
- Naudokite ' 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ą.
Vykdykite aukščiau pateikto kodo failą (controlFlow.js), kuriame yra toliau nurodyta komanda:
mazgo valdymasFlow. jsSukurta išvestis rodo, kad naudojant „ .pipe() “ ir „ Skaitomas srautas “, failo duomenys buvo nuskaityti ir išsiųsti į paskirties srautą, kad būtų rodomi tinklalapyje:
2 pavyzdys: Statinių failų skaitymas vietoje naudojant ReadStream
Tokiu atveju parenkamas pateiktas failas per srautą, o jo turinys rodomas konsolės lange, naudojant įvykių klausytojus:
konst fsObj = reikalauti ( 'fs' ) ;konst srautasObj = fsObj. sukurti „ReadStream“. ( „usecase.txt“ ) ;
srautasObj. įjungta ( 'duomenys' , ( turinys ) => {
konsolė. žurnalas ( turinys. toString ( ) ) ;
} ) ;
srautasObj. įjungta ( 'galas' , ( ) => {
konsolė. žurnalas ( ' \n Baigė skaityti failą.' ) ;
} ) ;
srautasObj. vamzdis ( procesas. stdout ) ;
Aukščiau pateikto kodo aprašymas yra toks:
- Pirma, „ fs “ modulis yra importuojamas ir jo objektas saugomas „ fsObj “ kintamasis.
- Tada naudokite „ fsObj “ iššaukia “ sukurtiReadStream() “ metodą ir perduoda tikslinio failo, kurio turinį reikia nuskaityti, kelią. Išsaugokite metodo rezultatą naujame kintamajame ' srautasObj “.
- Pridėkite ' ant () “ metodas su „streamObj“, kuris iškviečia atgalinio skambinimo funkciją, kai „ duomenis “ yra gaunamas. Gauti duomenys perduodami kaip atgalinio skambinimo funkcijos parametras, kuris konvertuoja duomenis į eilutės formatą ir rodomas konsolėje.
- Dar kartą pridėkite ' ant () “ metodas su “ srautasObj “ ir šį kartą jo atgalinio ryšio funkcija rodo pabaigos pranešimą, kai failas bus nuskaitytas.
Sugeneruota išvestis atlikus aukščiau pateiktą kodą rodo, kad nuskaityti duomenys kartu su pabaigos pranešimu buvo rodomi konsolėje:
Tai viskas apie skaitomų srautų naudojimą Node.js.
Išvada
Norėdami dirbti su skaitomais srautais Node.js, naudojamas metodas „ sukurtiReadStream() “ iškviečiamas per „ fs “ modulio objektas. Tada kaip metodo parametras perduodamas tikslinis failo kelias, kuriuo reikia įrašyti turinį. Jis gali būti naudojamas su ' .pipe() “ metodas, skirtas atlikti tolesnes užduotis, susijusias su gautais duomenimis, pavyzdžiui, įrašyti turinį į kitą failą. Šis įrašas iliustruoja darbo su skaitomais srautais procedūrą.