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.