Paano Magtrabaho Sa Mga Nasusulat na Stream sa Node.js?

Paano Magtrabaho Sa Mga Nasusulat Na Stream Sa Node Js



Ang data ay inililipat sa network sa pagitan ng pinagmulan at patutunguhan na mga lugar sa anyo ng mga stream. Ang panig ng nagpadala ay tinutukoy bilang ang pinagmulan at ang bahagi ng tatanggap ay kinakatawan bilang ang patutunguhang stream. Gamit ang Mga Stream na ito, ang data sa textual form o audio o video na format ay maaaring ipadala at matanggap na may kaunting pagkakataon ng data leakage o pagkawala.

Ipinapaliwanag ng gabay na ito ang pagtatrabaho sa mga maisusulat na stream sa Node.js.

Paano Magtrabaho Sa Mga Nasusulat na Stream sa Node.js?

Ang ' maisusulat ” stream ay maaaring gamitin upang magpasok ng bagong data sa file o maaaring ilagay ang nilalaman ng isa pang random na stream. Ang conversion o placement ng data ay kadalasang nangyayari sa tulong ng ' tubo() ” paraan. Ang pamamaraang ito ay ginagawang mas maginhawa ang proseso ng pag-convert at pagtatalaga ng nilalaman habang binabawasan ang mga pagkakataon ng banggaan ng data.







Syntax



Ang nasusulat na stream ay nilikha sa pamamagitan ng paggamit ng pamamaraan sa ibaba:



fs. createWriteStream ( 'targetFile.ext' ) ;

Sa syntax sa itaas, ang ' creatWriteStream() ' ay hinihingi ng bagay ng na-import na ' fs ” module, at ang file kung saan isusulat ang data ay ipinasa bilang isang parameter.





Tingnan natin ang ilang halimbawa para sa mga nasusulat na stream sa Node.js.

Halimbawa 1: Pagsusulat ng Nilalaman ng Isa pang File Gamit ang isang Nasusulat na Stream

Sa halimbawa sa ibaba, ang random na file ay ipinadala sa ibabaw ng nababasang Stream, at pagkatapos ang nilalaman ng file na ito ay inilalagay sa isa pang file na available sa maisusulat na Stream:



ay fsObj = nangangailangan ( 'fs' ) ;

const dataStream = fsObj. lumikhaReadStream ( 'mynewfile1.txt' ) ;

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

dataStream. tubo ( writeStream ) ;

Paglalarawan ng code sa itaas:

  • Una, ang ' fs 'Ang module ay na-import at ang object nito ay naka-imbak sa bagong ' fsObj ” variable.
  • Susunod, sa tulong ng ' fasObj 'tawagin ang' createReadStream() ” paraan para sa paglikha ng nababasang stream at ipasa ang napiling nababasang file bilang parameter nito.
  • Pagkatapos, ang nasusulat na stream ay nilikha sa pamamagitan ng paggamit ng ' createWriteStream() ” paraan upang isulat ang nilalaman sa ibinigay na file.
  • I-imbak ang mga resulta ng mga pamamaraan sa itaas sa ' dataStream 'at' writeStream ” mga variable ayon sa pagkakabanggit.
  • Panghuli, tawagan ang '. tubo() 'paraan na sinusundan ng ' dataStream ” at nangunguna sa “ writeStream ” mga variable.

Ngayon, isagawa ang naglalaman ng file(controlFlow.js) sa pamamagitan ng pagpapatakbo ng command sa ibaba:

Halimbawa 2: Pagsusulat ng Nilalaman sa File Gamit ang Paraang 'stream.write()'.

Sa halimbawang ito, ang ' sumulat() ” na paraan ay ginagamit upang magsulat ng data sa file na magagamit sa maisusulat na Stream:

ay fsObj = nangangailangan ( 'fs' ) ;
const httpObj = nangangailangan ( 'http' ) ;

const serveLocaly = httpObj. createServer ( ( kahilingan, tugon ) => {
subukan {
const cellStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
cellStream. magsulat ( 'Data na ilalagay sa naka-target na file.' ) ;
cellStream. wakas ( ) ;
tugon. wakas ( 'Data na Isinulat sa pamamagitan ng Writable Stream' )
}
mahuli ( pagkakamali ) {
console. pagkakamali ( pagkakamali ) ;
}
} ) ;
serveLocaly. makinig ka ( 8080 , ( ) => {
console. log ( 'Ang Server ay Tumatakbo sa Localhost Port Number: '8080' ' )
) ;

Ang paglalarawan ng code sa itaas ay ang mga sumusunod:

  • Una, i-import ang kinakailangang ' fs 'at' http ” module at iimbak ang kanilang mga bagay sa “ fsObj 'at' httpObj ” mga variable ayon sa pagkakabanggit.
  • Susunod, ang server ay nilikha sa pamamagitan ng paggamit ng ' createServer() ” paraan at pag-iimbak nitong bagong likhang server sa isang “ serveLocaly ” variable.
  • Pagkatapos, gumamit ng ' subukan ” i-block sa loob ng function ng callback ng method at i-invoke ang “ createWriteStream() 'paraan gamit ang ' fsObj ” variable.
  • Ipasa ang naka-target na file kung saan kailangang ipasok ang nilalaman, sa loob ng pamamaraang ito na panaklong at iimbak ang resulta sa ' cellStream ” variable
  • Gamitin ang ' sumulat() ” na may ganitong variable at magpasa ng dummy na mensahe sa loob ng panaklong nito na isusulat sa naka-target na file.
  • Isara ang Stream sa pamamagitan ng paggamit ng ' dulo() ” paraan at magpakita ng mensahe ng tagumpay sa web page sa pamamagitan ng paggamit ng “ response.end() ” paraan. saan' tugon ' ay ang callback parameter ng ' createServer ” paraan.
  • Gamitin ang ' mahuli ” block upang mahawakan ang anumang naganap na mga error.
  • Panghuli, makinig o i-set up ang server sa port number ' 8080 ” at ipakita ang mensahe ng tagumpay sa tulong ng callback function nito.

Ang nabuong output ay nagpapakita na ang ibinigay na teksto ay isinulat gamit ang ' sumulat() 'paraan:

Halimbawa 3: Pagsusulat ng Parehong Data sa Maramihang mga File

Sa halimbawang ito, babasahin ang isang file mula sa stream gamit ang “ createReadStream() ” paraan. Pagkatapos, isinusulat ang binasang nilalaman sa maraming file gamit ang ' createWriteStream() 'at' .pipe() ' paraan:

ay fsObj = nangangailangan ( 'fs' ) ;

const dataStream = fsObj. lumikhaReadStream ( 'mynewfile1.txt' ) ;

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

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

dataStream. tubo ( writeStream1 ) ;

dataStream. tubo ( writeStream2 ) ;

Sa snippet ng code sa itaas:

  • Ang ' createReadStream() ” paraan ay hinihimok at ang file na ang nilalaman ay kailangang basahin ay ipinasa bilang parameter nito. Ang resulta ng pamamaraang ito ay naka-imbak sa ' dataStream ” variable.
  • Susunod, ang ' createWriteStream() ” paraan ay tinatawag at ang naka-target na file ay ipinasa bilang parameter nito.
  • Sa parehong paraan, ang path para sa pangalawang file ay ipinasa din bilang isang nasusulat na stream at ang mga resulta ay naka-imbak sa ' writeStream1 'at' writeStream2 ” mga variable.
  • Pagkatapos nito, gamit ang ' .pipe() 'paraan ang nilalaman na nakaimbak sa ' dataStream Ang variable ay itinalaga sa ' writeStream1 'at' writeStream2 ” mga variable.

Ang nabuong output ay nagpapakita na ang ibinigay na nilalaman ng file ay naipasok sa ibinigay na mga file sa mga stream:

Iyan lang ang tungkol sa paggawa ng mga maisusulat na stream sa Node.js.

Konklusyon

Upang gumana sa mga maisusulat na stream, ang paraan ng ' createWriteStream() ' ay hinihingi sa pamamagitan ng ' fs ” object ng module. Ang naka-target na landas ng file kung saan kailangang isulat ang nilalaman ay ipinasa bilang parameter nito. Upang isulat ang nilalaman mula sa isa pang stream ang ' .pipe() ” paraan ang ginagamit. Ang ' sumulat() ” na paraan ay nakakatulong din pagdating sa pagsulat ng nilalaman nang direkta sa naka-target na file. Inilarawan ng post na ito ang pamamaraan ng pagtatrabaho sa mga maisusulat na stream.