V tem priročniku je razloženo delo z zapisljivimi tokovi v Node.js.
Kako delati z zapisljivimi tokovi v Node.js?
' zapisljivo ” se lahko uporabi za vstavljanje novih podatkov v datoteko ali za umestitev vsebine drugega naključnega toka. Pretvorba ali postavitev podatkov se večinoma zgodi s pomočjo » cev() ” metoda. S to metodo je postopek pretvorbe in dodeljevanja vsebine bolj priročen, hkrati pa se zmanjšajo možnosti kolizije podatkov.
Sintaksa
Zapisljivi tok se ustvari s priklicem spodnje metode:
fs. createWriteStream ( 'targetFile.ext' ) ;
V zgornji sintaksi je » createWriteStream() ' prikliče objekt uvoženega ' fs ” in datoteka, v katero bodo zapisani podatki, se posreduje kot parameter.
Oglejmo si nekaj primerov za zapisljive tokove v Node.js.
Primer 1: Pisanje vsebine druge datoteke z uporabo zapisljivega toka
V spodnjem primeru je naključna datoteka poslana prek berljivega toka, nato pa se vsebina te datoteke postavi v drugo datoteko, ki je na voljo v zapisljivem toku:
je bil fsObj = zahtevati ( 'fs' ) ;
konst dataStream = fsObj. createReadStream ( 'mynewfile1.txt' ) ;
konst writeStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
dataStream. cev ( writeStream ) ;
Opis zgornje kode:
- Prvič, ' fs ' je uvožen in njegov objekt shranjen v novi ' fsObj ” spremenljivka.
- Nato s pomočjo ' fasObj ' prikliči ' createReadStream() ” za ustvarjanje berljivega toka in posredovanje izbrane berljive datoteke kot njen parameter.
- Nato se zapisljivi tok ustvari s klicem » createWriteStream() ” za pisanje vsebine v predloženo datoteko.
- Shranite rezultate zgoraj priklicanih metod v » dataStream « in » writeStream ” spremenljivke oz.
- Nazadnje pokličite ». cev () ' metoda, ki ji sledi ' dataStream « in vodi z » writeStream ” spremenljivk.
Zdaj izvedite vsebovalno datoteko (controlFlow.js), tako da zaženete spodnji ukaz:
Primer 2: Zapisovanje vsebine v datoteko z uporabo metode »stream.write()«.
V tem primeru je ' pisati() ” se uporablja za zapisovanje podatkov v datoteko, ki je na voljo v zapisljivem toku:
je bil fsObj = zahtevati ( 'fs' ) ;konst httpObj = zahtevati ( 'http' ) ;
konst serveLocaly = httpObj. createServer ( ( prošnja, odgovor ) => {
poskusi {
konst cellStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
cellStream. pisati ( 'Podatki, ki bodo vneseni v ciljno datoteko.' ) ;
cellStream. konec ( ) ;
odgovor. konec ( 'Podatki, zapisani prek zapisljivega toka' )
}
ulov ( napaka ) {
konzola. napaka ( napaka ) ;
}
} ) ;
serveLocaly. poslušaj ( 8080 , ( ) => {
konzola. dnevnik ( 'Strežnik deluje na številki vrat lokalnega gostitelja: '8080'' )
) ;
Opis zgornje kode je naslednji:
- Najprej uvozite zahtevano » fs « in » http ” modulov in shrani njihove objekte v “ fsObj « in » httpObj ” spremenljivke oz.
- Nato je bil strežnik ustvarjen s klicem » createServer() ' in shranjevanje tega na novo ustvarjenega strežnika v ' serveLocaly ” spremenljivka.
- Nato uporabite » poskusi ' znotraj funkcije povratnega klica metode in pokličite ' createWriteStream() ' metoda z uporabo ' fsObj ” spremenljivka.
- Posredujte ciljno datoteko, v katero je treba vstaviti vsebino, znotraj tega oklepaja metode in shranite rezultat v » cellStream ” spremenljivka
- Uporabite ' pisati() ” s to spremenljivko in v njenem oklepaju posreduje navidezno sporočilo, ki bo zapisano v ciljni datoteki.
- Zaprite tok s klicem » konec () ' in prikažete sporočilo o uspehu prek spletne strani tako, da prikličete ' response.end() ” metoda. Kje ' odgovor ' je parameter povratnega klica za ' createServer ” metoda.
- Uporabite ' ulov ” za obravnavo morebitnih napak.
- Končno poslušajte ali nastavite strežnik prek številke vrat ' 8080 ” in prikaže sporočilo o uspehu s pomočjo funkcije povratnega klica.
Ustvarjeni izhod kaže, da je bilo navedeno besedilo napisano z uporabo » pisati() ” metoda:
Primer 3: Zapisovanje istih podatkov v več datotek
V tem primeru bo ena datoteka prebrana iz toka z uporabo » createReadStream() ” metoda. Nato se prebrana vsebina zapiše v več datotek z uporabo » createWriteStream() « in » .pipe() ” metode:
je bil fsObj = zahtevati ( 'fs' ) ;konst dataStream = fsObj. createReadStream ( 'mynewfile1.txt' ) ;
konst writeStream1 = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
konst writeStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;
dataStream. cev ( writeStream1 ) ;
dataStream. cev ( writeStream2 ) ;
V zgornjem delčku kode:
- ' createReadStream() ” se prikliče metoda in datoteka, katere vsebino je treba prebrati, se posreduje kot njen parameter. Rezultat te metode je shranjen v ' dataStream ” spremenljivka.
- Nato je ' createWriteStream() ” se pokliče metoda in ciljna datoteka se posreduje kot njen parameter.
- Na enak način se tudi pot za drugo datoteko posreduje kot zapisljiv tok, rezultati pa so shranjeni v ' writeStream1 « in » writeStream2 ” spremenljivk.
- Po tem z uporabo » .pipe() ' vsebino, shranjeno v ' dataStream ' je dodeljena spremenljivki ' writeStream1 « in » writeStream2 ” spremenljivk.
Ustvarjeni izhod kaže, da je bila podana vsebina datoteke vstavljena v podane datoteke prek tokov:
To je vse o delovanju zapisljivih tokov v Node.js.
Zaključek
Za delo z zapisljivimi tokovi je metoda ' createWriteStream() ' se prikliče prek ' fs ” predmet modula. Ciljna pot datoteke, na katero je treba zapisati vsebino, se posreduje kot njen parameter. Za pisanje vsebine iz drugega toka uporabite » .pipe() ” se uporablja metoda. ' pisati() ” Metoda je prav tako koristna, ko gre za pisanje vsebine neposredno v ciljno datoteko. Ta objava je ponazorila postopek dela z zapisljivimi tokovi.