Ovaj vodič objašnjava rad s tokovima koji se mogu pisati u Node.js.
Kako raditi s tokovima za pisanje u Node.js?
' za pisanje ” tok se može koristiti za umetanje novih podataka u datoteku ili može smjestiti sadržaj drugog nasumičnog toka. Pretvorba ili smještaj podataka uglavnom se događa uz pomoć ' cijev() ” metoda. Ova metoda čini proces pretvorbe i dodjele sadržaja praktičnijim, a istovremeno smanjuje šanse za koliziju podataka.
Sintaksa
Tok koji se može pisati kreira se pozivanjem metode u nastavku:
fs. createWriteStream ( 'targetFile.ext' ) ;
U gornjoj sintaksi, ' createWriteStream() ” poziva objekt uvezenog “ fs ”, a kao parametar se prosljeđuje datoteka u koju će se podaci pisati.
Pogledajmo nekoliko primjera streamova koji se mogu pisati u Node.js.
Primjer 1: Zapisivanje sadržaja druge datoteke korištenjem toka za pisanje
U donjem primjeru, nasumična datoteka šalje se preko čitljivog Streama, a zatim se sadržaj ove datoteke stavlja u drugu datoteku dostupnu u Streamu za pisanje:
bio je fsObj = zahtijevati ( 'fs' ) ;
konst dataStream = fsObj. createReadStream ( 'moja novadatoteka1.txt' ) ;
konst writeStream = fsObj. createWriteStream ( 'moja novadatoteka2.txt' ) ;
dataStream. cijev ( writeStream ) ;
Opis gornjeg koda:
- Prvo, ' fs ” modul se uvozi i njegov objekt se pohranjuje u novi “ fsObj ” varijabla.
- Dalje, uz pomoć ' fasObj ' pozvati ' createReadStream() ” metoda za stvaranje čitljivog toka i proslijedite odabranu čitljivu datoteku kao svoj parametar.
- Zatim se stvara tok za pisanje pozivanjem ' createWriteStream() ” za pisanje sadržaja u datoteci.
- Pohranite rezultate gore pozvanih metoda u ' dataStream ' i ' writeStream ” varijabli.
- Na kraju, pozovite '. cijev() ' metoda nakon koje slijedi ' dataStream ' i vodi s ' writeStream ” varijable.
Sada pokrenite datoteku koja sadrži (controlFlow.js) izvođenjem naredbe u nastavku:
Primjer 2: Zapisivanje sadržaja u datoteku pomoću metode “stream.write()”.
U ovom primjeru, ' pisati() ” metoda se koristi za pisanje podataka preko datoteke dostupne preko Streama za pisanje:
bio je fsObj = zahtijevati ( 'fs' ) ;konst httpObj = zahtijevati ( 'http' ) ;
konst serveLocaly = httpObj. createServer ( ( zahtjev, odgovor ) => {
probati {
konst cellStream = fsObj. createWriteStream ( 'moja novadatoteka2.txt' ) ;
cellStream. pisati ( 'Podaci koji će se smjestiti u ciljanu datoteku.' ) ;
cellStream. kraj ( ) ;
odgovor. kraj ( 'Podaci zapisani putem Writable Stream' )
}
ulov ( greška ) {
konzola. greška ( greška ) ;
}
} ) ;
serveLocaly. slušati ( 8080 , ( ) => {
konzola. log ( 'Poslužitelj radi na Localhost priključku broj: '8080'' )
) ;
Opis gornjeg koda je sljedeći:
- Prvo uvezite potrebne ' fs ' i ' http ' modula i pohranjuju njihove objekte u ' fsObj ' i ' httpObj ” varijabli.
- Zatim, poslužitelj je kreiran pozivanjem ' kreiraj poslužitelj() ' metoda i pohranjivanje ovog novostvorenog poslužitelja u ' serveLocaly ” varijabla.
- Zatim upotrijebite ' probati ' unutar funkcije povratnog poziva metode i pozovite ' createWriteStream() ' metodom pomoću ' fsObj ” varijabla.
- Proslijedite ciljanu datoteku u koju treba umetnuti sadržaj, unutar ove zagrade metode i pohranite rezultat u ' cellStream ” varijabla
- Iskoristite ' pisati() ” s ovom varijablom i proslijedite lažnu poruku unutar njezinih zagrada koja će biti zapisana u ciljanu datoteku.
- Zatvorite Stream pozivanjem ' kraj() ' i prikazati poruku o uspjehu preko web stranice pozivanjem ' odgovor.end() ” metoda. Gdje ' odgovor ” je parametar povratnog poziva za „ createServer ” metoda.
- Iskoristite ' ulov ” blok za obradu eventualnih pogrešaka.
- Na kraju, poslušajte ili postavite poslužitelj preko broja priključka ' 8080 ” i prikazati poruku o uspjehu uz pomoć svoje funkcije povratnog poziva.
Generirani izlaz pokazuje da je navedeni tekst napisan pomoću ' pisati() ” metoda:
Primjer 3: Zapisivanje istih podataka u više datoteka
U ovom primjeru, jedna će se datoteka pročitati iz toka pomoću ' createReadStream() ” metoda. Zatim se pročitani sadržaj zapisuje u više datoteka pomoću ' createWriteStream() ' i ' .cijev() ” metode:
bio je fsObj = zahtijevati ( 'fs' ) ;konst dataStream = fsObj. createReadStream ( 'moja novadatoteka1.txt' ) ;
konst pisanjeStream1 = fsObj. createWriteStream ( 'moja novadatoteka2.txt' ) ;
konst writeStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;
dataStream. cijev ( pisanjeStream1 ) ;
dataStream. cijev ( writeStream2 ) ;
U gornjem isječku koda:
- ' createReadStream() ” poziva se metoda i kao njen parametar se prosljeđuje datoteka čiji sadržaj treba pročitati. Rezultat ove metode pohranjuje se u ' dataStream ” varijabla.
- Zatim, ' createWriteStream() ” poziva se metoda i ciljana datoteka se prosljeđuje kao njezin parametar.
- Na isti način, staza za drugu datoteku također se prosljeđuje kao tok za pisanje, a rezultati se pohranjuju u ' pisanjeStream1 ' i ' writeStream2 ” varijable.
- Nakon toga, koristeći ' .cijev() ' metoda sadržaj pohranjen u ' dataStream ” varijabla je dodijeljena “ pisanjeStream1 ' i ' writeStream2 ” varijable.
Generirani izlaz pokazuje da je dostavljeni sadržaj datoteke umetnut u dostavljene datoteke preko tokova:
To je sve o radu tokova koji se mogu pisati u Node.js.
Zaključak
Za rad s tokovima koji se mogu pisati, metoda ' createWriteStream() ” se poziva putem „ fs ” objekt modula. Ciljana staza datoteke na koju se sadržaj treba zapisati prosljeđuje se kao njen parametar. Za pisanje sadržaja iz drugog toka ' .cijev() ” koristi se metoda. ' pisati() ” također je korisna kada se radi o pisanju sadržaja izravno u ciljanu datoteku. Ovaj post je ilustrirao postupak rada s tokovima koji se mogu pisati.