Jak pracovat se zapisovatelnými streamy v Node.js?

Jak Pracovat Se Zapisovatelnymi Streamy V Node Js



Data jsou přenášena po síti mezi zdrojovým a cílovým místem ve formě toků. Strana odesílatele se označuje jako zdroj a strana příjemce je reprezentována jako cílový tok. Pomocí těchto streamů lze odesílat a přijímat data v textové podobě nebo audio či video formátu s minimální pravděpodobností úniku nebo ztráty dat.

Tato příručka vysvětluje práci se zapisovatelnými streamy v Node.js.

Jak pracovat se zapisovatelnými streamy v Node.js?

' zapisovatelný ” stream lze použít k vložení nových dat do souboru nebo může umístit obsah jiného náhodného streamu. Ke konverzi nebo umístění dat většinou dochází pomocí „ trubka() “ metoda. Díky této metodě je proces převodu a přiřazování obsahu pohodlnější a zároveň snižuje pravděpodobnost kolize dat.







Syntax



Zapisovatelný stream je vytvořen vyvoláním níže uvedené metody:



fs. createWriteStream ( 'targetFile.ext' ) ;

Ve výše uvedené syntaxi je „ creatWriteStream() “ je vyvolán objektem importovaného “ fs ” a jako parametr je předán soubor, do kterého budou data zapsána.





Pojďme se podívat na několik příkladů zapisovatelných streamů v Node.js.

Příklad 1: Zápis obsahu jiného souboru pomocí zapisovatelného streamu

V níže uvedeném příkladu je náhodný soubor odeslán přes čitelný stream a poté je obsah tohoto souboru umístěn do jiného souboru dostupného v zapisovatelném streamu:



byl fsObj = vyžadovat ( 'fs' ) ;

konst datový tok = fsObj. vytvořitReadStream ( 'mynewfile1.txt' ) ;

konst writeStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;

datový tok. trubka ( writeStream ) ;

Popis výše uvedeného kódu:

  • Za prvé, „ fs “ modul je importován a jeho objekt je uložen v novém “ fsObj “proměnná.
  • Dále s pomocí „ fasObj 'vyvolat' createReadStream() ” pro vytvoření čitelného streamu a předat vybraný čitelný soubor jako jeho parametr.
  • Poté se zapisovatelný stream vytvoří vyvoláním „ createWriteStream() ” způsob zápisu obsahu do poskytnutého souboru.
  • Uložte výsledky výše vyvolaných metod do „ datový tok ' a ' writeStream “proměnné.
  • Nakonec vyvolejte „. trubka() “ metoda následovaná “ datový tok “ a vede s „ writeStream “proměnné.

Nyní spusťte obsahující soubor (controlFlow.js) spuštěním níže uvedeného příkazu:

Příklad 2: Zápis obsahu do souboru pomocí metody „stream.write()“.

V tomto příkladu „ napsat() ” metoda se používá k zápisu dat přes soubor dostupný přes zapisovatelný stream:

byl fsObj = vyžadovat ( 'fs' ) ;
konst httpObj = vyžadovat ( 'http' ) ;

konst serveLocaly = httpObj. createServer ( ( vyžádat odpověď ) => {
Snaž se {
konst cellStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
cellStream. napsat ( 'Data, která mají být umístěna do cílového souboru.' ) ;
cellStream. konec ( ) ;
Odezva. konec ( „Data zapsaná prostřednictvím zapisovatelného streamu“ )
}
chytit ( chyba ) {
řídicí panel. chyba ( chyba ) ;
}
} ) ;
serveLocaly. poslouchat ( 8080 , ( ) => {
řídicí panel. log ( 'Server běží na Localhost Port Number: '8080'' )
) ;

Popis výše uvedeného kódu je následující:

  • Nejprve importujte požadované „ fs ' a ' http “ moduly a ukládat jejich objekty do “ fsObj ' a ' httpObj “proměnné.
  • Dále byl server vytvořen vyvoláním příkazu „ createServer() “ a uložení tohoto nově vytvořeného serveru do “ serveLocaly “proměnná.
  • Poté použijte „ Snaž se ” zablokujte uvnitř funkce zpětného volání metody a vyvolejte funkci “ createWriteStream() “ pomocí metody “ fsObj “proměnná.
  • Předejte cílový soubor, do kterého je třeba obsah vložit, do závorky této metody a uložte výsledek do „ cellStream “proměnná
  • Využijte „ napsat() ” s touto proměnnou a předejte fiktivní zprávu do její závorky, která se zapíše do cílového souboru.
  • Zavřete stream vyvoláním „ konec() “ a na webové stránce zobrazíte zprávu o úspěchu vyvoláním „ response.end() “ metoda. kde ' Odezva “ je parametr zpětného volání funkce „ createServer “ metoda.
  • Využijte „ chytit ” blok pro zpracování případných chyb.
  • Nakonec poslouchejte nebo nastavte server přes číslo portu “ 8080 “ a zobrazí zprávu o úspěchu pomocí funkce zpětného volání.

Vygenerovaný výstup ukazuje, že poskytnutý text byl napsán pomocí „ napsat() “ metoda:

Příklad 3: Zápis stejných dat do více souborů

V tomto příkladu bude ze streamu načten jeden soubor pomocí „ createReadStream() “ metoda. Poté je přečtený obsah zapsán do více souborů pomocí „ createWriteStream() ' a ' .trubka() “ metody:

byl fsObj = vyžadovat ( 'fs' ) ;

konst datový tok = fsObj. vytvořitReadStream ( 'mynewfile1.txt' ) ;

konst writeStream1 = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;

konst writeStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;

datový tok. trubka ( writeStream1 ) ;

datový tok. trubka ( writeStream2 ) ;

Ve výše uvedeném úryvku kódu:

  • ' createReadStream() ” je vyvolána metoda a jako její parametr je předán soubor, jehož obsah je třeba přečíst. Výsledek této metody je uložen v „ datový tok “proměnná.
  • Dále, „ createWriteStream() ” je volána metoda a cílový soubor je předán jako její parametr.
  • Stejným způsobem je cesta k druhému souboru také předána jako zapisovatelný stream a výsledky jsou uloženy v „ writeStream1 ' a ' writeStream2 “proměnné.
  • Poté pomocí „ .trubka() ” způsob obsah uložený v “ datový tok proměnná ' je přiřazena k ' writeStream1 ' a ' writeStream2 “proměnné.

Vygenerovaný výstup ukazuje, že poskytnutý obsah souboru byl vložen do poskytnutých souborů přes streamy:

To je vše o fungování zapisovatelných streamů v Node.js.

Závěr

Chcete-li pracovat se zapisovatelnými proudy, metoda „ createWriteStream() “ se vyvolá prostřednictvím „ fs “modulový objekt. Jako jeho parametr je předána cílová cesta k souboru, na kterou je třeba obsah zapsat. Chcete-li napsat obsah z jiného streamu, „ .trubka() “ používá se metoda. ' napsat() ” metoda je také užitečná, pokud jde o zápis obsahu přímo do cílového souboru. Tento příspěvek ilustroval postup práce se zapisovatelnými streamy.