Den här guiden förklarar hur du arbetar med skrivbara strömmar i Node.js.
Hur man arbetar med skrivbara strömmar i Node.js?
den ' skrivbar ” ström kan användas för att infoga ny data i filen eller kan placera innehållet i en annan slumpmässig ström. Datakonverteringen eller placeringen sker oftast med hjälp av ' rör() 'metoden. Denna metod gör processen att konvertera och tilldela innehåll bekvämare samtidigt som risken för kollision av data minskar.
Syntax
Den skrivbara strömmen skapas genom att anropa följande metod:
fs. skapaWriteStream ( 'targetFile.ext' ) ;
I ovanstående syntax, ' creatWriteStream() ” anropas av objektet för den importerade ” fs ”-modulen, och filen som data ska skrivas på skickas som en parameter.
Låt oss ta en titt på ett par exempel på skrivbara strömmar i Node.js.
Exempel 1: Skriva innehållet i en annan fil med en skrivbar ström
I exemplet nedan skickas den slumpmässiga filen över den läsbara Stream, och sedan placeras detta filinnehåll i en annan fil tillgänglig på den skrivbara Stream:
var fsObj = behöva ( 'fs' ) ;
konst dataström = fsObj. skapaReadStream ( 'minnyfil1.txt' ) ;
konst writeStream = fsObj. skapaWriteStream ( 'minnyfil2.txt' ) ;
dataström. rör ( writeStream ) ;
Beskrivning av ovanstående kod:
- Först, ' fs ”-modulen importeras och dess objekt lagras i den nya ” fsObj ” variabel.
- Därefter, med hjälp av ' fasObj ' åberopa ' createReadStream() ”-metod för att skapa en läsbar ström och skicka den valda läsbara filen som parameter.
- Sedan skapas den skrivbara strömmen genom att anropa ' createWriteStream() ”-metod för att skriva innehållet på den medföljande filen.
- Lagra resultaten av de ovan åberopade metoderna i ' dataström ' och ' writeStream ” respektive variabler.
- Slutligen, åberopa '. rör() metod följt av dataström ” och leder med ” writeStream ” variabler.
Kör nu den innehållande filen (controlFlow.js) genom att köra kommandot nedan:
Exempel 2: Skriva innehållet till filen med metoden 'stream.write()'.
I det här exemplet är ' skriva() ”-metoden används för att skriva data över filen som är tillgänglig över den skrivbara Stream:
var fsObj = behöva ( 'fs' ) ;konst httpObj = behöva ( 'http' ) ;
konst servera lokalt = httpObj. skapaServer ( ( begäran, svar ) => {
Prova {
konst cellStream = fsObj. skapaWriteStream ( 'minnyfil2.txt' ) ;
cellStream. skriva ( 'Data som ska placeras i målfilen.' ) ;
cellStream. slutet ( ) ;
svar. slutet ( 'Data skrivna via skrivbar ström' )
}
fånga ( fel ) {
trösta. fel ( fel ) ;
}
} ) ;
servera lokalt. lyssna ( 8080 , ( ) => {
trösta. logga ( 'Server körs på Localhost Portnummer: '8080' ' )
) ;
Beskrivningen av ovanstående kod är följande:
- Importera först den nödvändiga ' fs ' och ' http '-moduler och lagra deras objekt i ' fsObj ' och ' httpObj ” respektive variabler.
- Därefter har servern skapats genom att anropa ' createServer() '-metoden och lagra denna nyskapade server i en ' servera lokalt ” variabel.
- Använd sedan en ' Prova ' blockera inuti metodåteruppringningsfunktionen och anropa ' createWriteStream() ' metoden med ' fsObj ” variabel.
- Skicka den riktade filen på vilken innehållet måste infogas, inom denna metodparentes och lagra resultatet i ' cellStream ” variabel
- Använd ' skriva() ”-metoden med denna variabel och skicka ett dummy-meddelande inom dess parentes som kommer att skrivas i målfilen.
- Stäng strömmen genom att anropa ' slutet() '-metoden och visa ett framgångsmeddelande över webbsidan genom att anropa ' response.end() 'metoden. Var ' svar ' är återuppringningsparametern för ' skapaServer 'metoden.
- Använd ' fånga ” block för att hantera eventuella fel.
- Slutligen, lyssna eller ställ in servern över portnumret ' 8080 ” och visa framgångsmeddelandet med hjälp av dess återuppringningsfunktion.
Den genererade utdata visar att den tillhandahållna texten har skrivits med hjälp av ' skriva() ' metod:
Exempel 3: Att skriva samma data på flera filer
I det här exemplet kommer en enskild fil att läsas från strömmen med hjälp av ' createReadStream() 'metoden. Sedan skrivs det lästa innehållet över flera filer med hjälp av ' createWriteStream() ' och ' .rör() ' metoder:
var fsObj = behöva ( 'fs' ) ;konst dataström = fsObj. skapaReadStream ( 'minnyfil1.txt' ) ;
konst skrivStream1 = fsObj. skapaWriteStream ( 'minnyfil2.txt' ) ;
konst skrivStream2 = fsObj. skapaWriteStream ( 'usecase.txt' ) ;
dataström. rör ( skrivStream1 ) ;
dataström. rör ( skrivStream2 ) ;
I kodavsnittet ovan:
- den ' createReadStream() ”-metoden anropas och filen vars innehåll måste läsas skickas som dess parameter. Resultatet av denna metod lagras i ' dataström ” variabel.
- Därefter ' createWriteStream() ”-metoden anropas och målfilen skickas som dess parameter.
- På samma sätt skickas även sökvägen till den andra filen som en skrivbar ström och resultaten lagras i ' skrivStream1 ' och ' skrivStream2 ” variabler.
- Efter det använder du ' .rör() ' metoden innehållet som lagras i ' dataström variabeln tilldelas till skrivStream1 ' och ' skrivStream2 ” variabler.
Den genererade utdata visar att det tillhandahållna filinnehållet har infogats i de tillhandahållna filerna över strömmarna:
Det handlar om hur skrivbara strömmar fungerar i Node.js.
Slutsats
För att arbeta med skrivbara strömmar, metoden för ' createWriteStream() ' anropas via ' fs ” modulobjekt. Den riktade filsökvägen som innehållet behöver skrivas på skickas som dess parameter. För att skriva innehållet från en annan ström .rör() ”-metoden används. den ' skriva() ”-metoden är också användbar när det gäller att skriva innehåll direkt på den riktade filen. Det här inlägget har illustrerat proceduren för att arbeta med skrivbara strömmar.