Как да работите с потоци за запис в Node.js?

Kak Da Rabotite S Potoci Za Zapis V Node Js



Данните се прехвърлят по мрежата между източника и местоназначението под формата на потоци. Страната на подателя се нарича източник, а страната на получателя е представена като поток на местоназначение. Използвайки тези потоци, данните в текстова форма или аудио или видео формат могат да се изпращат и получават с минимални шансове за изтичане или загуба на данни.

Това ръководство обяснява работата с записваеми потоци в Node.js.

Как да работите с потоци с възможност за запис в Node.js?

записваем ” потокът може да се използва за вмъкване на нови данни във файла или може да постави съдържанието на друг произволен поток. Преобразуването или поставянето на данни се случва най-вече с помощта на „ тръба() ” метод. Този метод прави процеса на конвертиране и присвояване на съдържание по-удобен, като същевременно намалява шансовете за сблъсък на данни.







Синтаксис



Потокът с възможност за запис се създава чрез извикване на метода по-долу:



fs. createWriteStream ( 'targetFile.ext' ) ;

В горния синтаксис „ createWriteStream() ” се извиква от обекта на импортирания „ fs ”, а файлът, в който ще се записват данните, се предава като параметър.





Нека да разгледаме няколко примера за записваеми потоци в Node.js.

Пример 1: Записване на съдържанието на друг файл с помощта на записваем поток

В примера по-долу произволният файл се изпраща през потока, който може да се чете, и след това съдържанието на този файл се поставя в друг файл, наличен в потока, който може да се записва:



беше fsObj = изискват ( 'fs' ) ;

конст dataStream = fsObj. createReadStream ( 'mynewfile1.txt' ) ;

конст writeStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;

dataStream. тръба ( writeStream ) ;

Описание на горния код:

  • Първо, „ fs ” се импортира и обектът му се съхранява в новия „ fsObj ” променлива.
  • След това с помощта на „ fasObj ' извикване на ' createReadStream() ” за създаване на четим поток и предаване на избрания четим файл като негов параметър.
  • След това записваемият поток се създава чрез извикване на „ createWriteStream() ” за запис на съдържанието в предоставения файл.
  • Съхранявайте резултатите от горепосочените методи в „ dataStream ' и ' writeStream ” съответно променливи.
  • Накрая извикайте „. тръба() ' метод, последван от ' dataStream ” и водещ с „ writeStream ” променливи.

Сега изпълнете съдържащия файл (controlFlow.js), като изпълните командата по-долу:

Пример 2: Записване на съдържанието във файл с помощта на метода „stream.write()“.

В този пример „ пиши() ” методът се използва за запис на данни върху файла, наличен през записваемия поток:

беше fsObj = изискват ( 'fs' ) ;
конст httpObj = изискват ( 'http' ) ;

конст serveLocaly = httpObj. createServer ( ( молба, отговор ) => {
опитвам {
конст cellStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
cellStream. пишете ( „Данни, които да бъдат поставени в целевия файл.“ ) ;
cellStream. край ( ) ;
отговор. край ( „Данни, записани чрез записваем поток“ )
}
улов ( грешка ) {
конзола. грешка ( грешка ) ;
}
} ) ;
serveLocaly. слушам ( 8080 , ( ) => {
конзола. дневник ( „Сървърът работи на номер на порт на локален хост: „8080““ )
) ;

Описанието на горния код е както следва:

  • Първо импортирайте необходимите „ fs ' и ' http ” модули и съхранява техните обекти в „ fsObj ' и ' httpObj ” съответно променливи.
  • След това сървърът е създаден чрез извикване на „ createServer() ” и съхраняване на този новосъздаден сървър в „ serveLocaly ” променлива.
  • След това използвайте „ опитвам ” блок във функцията за обратно извикване на метода и извикване на „ createWriteStream() ' метод с помощта на ' fsObj ” променлива.
  • Предайте целевия файл, в който съдържанието трябва да бъде вмъкнато, в тази скоба на метода и съхранете резултата в „ cellStream ” променлива
  • Използвайте „ пиши() ” с тази променлива и предава фиктивно съобщение в скобите, което ще бъде записано в целевия файл.
  • Затворете потока, като извикате „ край() ” и покажете съобщение за успех над уеб страницата, като извикате „ response.end() ” метод. Където ' отговор ” е параметърът за обратно извикване на „ createServer ” метод.
  • Използвайте „ улов ” за обработка на всички възникнали грешки.
  • Накрая слушайте или настройте сървъра през номера на порта ' 8080 ” и показва съобщението за успех с помощта на неговата функция за обратно извикване.

Генерираният изход показва, че предоставеният текст е написан с помощта на „ пиши() ” метод:

Пример 3: Записване на едни и същи данни в множество файлове

В този пример един файл ще бъде прочетен от потока с помощта на „ createReadStream() ” метод. След това прочетеното съдържание се записва върху множество файлове с помощта на „ createWriteStream() ' и ' .тръба() ” методи:

беше fsObj = изискват ( 'fs' ) ;

конст dataStream = fsObj. createReadStream ( 'mynewfile1.txt' ) ;

конст writeStream1 = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;

конст writeStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;

dataStream. тръба ( writeStream1 ) ;

dataStream. тръба ( writeStream2 ) ;

В горния кодов фрагмент:

  • createReadStream() ” се извиква методът и файлът, чието съдържание трябва да бъде прочетено, се предава като негов параметър. Резултатът от този метод се съхранява в „ dataStream ” променлива.
  • След това „ createWriteStream() ” се извиква методът и целевият файл се предава като негов параметър.
  • По същия начин пътят за втория файл също се предава като поток с възможност за запис и резултатите се съхраняват в „ writeStream1 ' и ' writeStream2 ” променливи.
  • След това с помощта на „ .тръба() ” съдържанието, съхранено в „ dataStream ' променливата е присвоена на ' writeStream1 ' и ' writeStream2 ” променливи.

Генерираният изход показва, че предоставеното файлово съдържание е вмъкнато в предоставените файлове през потоците:

Това е всичко за работата на записваеми потоци в Node.js.

Заключение

За да работите с записваеми потоци, методът на „ createWriteStream() ” се извиква чрез „ fs ” модулен обект. Пътят на целевия файл, на който съдържанието трябва да бъде записано, се предава като негов параметър. За да запишете съдържанието от друг поток, „ .тръба() “ се използва методът. „ пиши() ” също е полезен, когато става въпрос за писане на съдържание директно върху целевия файл. Тази публикация илюстрира процедурата за работа с потоци с възможност за запис.