Това ръководство обяснява работата с записваеми потоци в 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 ” модулен обект. Пътят на целевия файл, на който съдържанието трябва да бъде записано, се предава като негов параметър. За да запишете съдържанието от друг поток, „ .тръба() “ се използва методът. „ пиши() ” също е полезен, когато става въпрос за писане на съдържание директно върху целевия файл. Тази публикация илюстрира процедурата за работа с потоци с възможност за запис.