Rumah > Artikel > hujung hadapan web > Artikel untuk bercakap tentang strim dalam Node
Apakah aliran? Bagaimana untuk memahami aliran? Artikel berikut akan memberi anda pemahaman yang mendalam tentang aliran dalam Nodejs, saya harap ia akan membantu anda!
aliran ialah aliran, yang boleh difahami sebagai satu siri bait yang wujud seperti aliran air. Menurut penjelasan dokumen rasmi:
Strim ialah antara muka abstrak untuk bekerja dengan data penstriman dalam Node.js.
A strim adalah untuk Memproses data aliran dalam Node.js ialah antara muka abstrak untuk bait berterusan. Terdapat 4 jenis strim asas, dan artikel ini terutamanya memperkenalkan dua daripadanya - strim boleh dibaca dan strim boleh tulis.
Kita boleh mencipta strim boleh dibacafs.createReadStream()
melalui readableStream
, parameter pertama boleh menjadi fail untuk dibaca Laluan, contohnya, kandungan daripada test.txt fail sedia ada ialah:
hello juejin
Parameter kedua (pilihan) boleh dihantar dalam objek pilihan untuk mengawal kedudukan mula dan tamat bacaan data, dsb.: [Tutorial berkaitan Disyorkan: tutorial video nodejs]
const fs = require('fs') const readableStream = fs.createReadStream('./test.txt', { start: 6, end: 11 })
Perhatikan bahawa data yang dibaca termasuk start
dan end
. Seperti yang dinyatakan sebelum ini semasa memperkenalkan modul acara, semua strim ialah tika EventEmitter
. Jadi data diperoleh dengan mendengar acara 'data'
:
readableStream.on('data', data => { console.log(data) console.log(data.toString()) })
Hasil cetakan adalah seperti berikut. Lalai ialah objek Penimbal, yang boleh ditukar kepada rentetan. melalui kaedah toString()
:
Perhatikan bahawa apabila membaca data, maksimum 64 * 1024 bait boleh dibaca pada satu masa Jika anda ingin menukar nilai ini, anda boleh menukarnya melalui pilihan highWaterMark
. Selain itu, anda juga boleh menggunakan pause()
untuk menjeda dan menggunakan resume()
untuk meneruskan bacaan:
const readableStream = fs.createReadStream('./test.txt', { start: 6, end: 11, highWaterMark: 2 // 默认为 64 * 1024 }) readableStream.on('data', data => { console.log(data) console.log(data.toString()) readableStream.pause() // 暂停读取 setTimeout(() => { readableStream.resume() // 恢复读取 }, 2000) })
Hasil pelaksanaan adalah seperti berikut:
Selain 'data'
Acara, strim boleh dibaca dan acara lain, seperti mendengar fail dibuka 'open'
(panggilan balik akan dihantar dalam parameter fd), mendengar fail dibaca end
(lalai membaca hingga akhir), 'end'
yang memantau penutupan fail (fail akan ditutup secara automatik selepas membaca): 'close'
readableStream.on('data', data => console.log(data)) readableStream.on('open', fd => console.log(`${fd}文件打开了`)) readableStream.on('end', () => console.log('文件读取到 end 位置了')) readableStream.on('close', () => console.log('文件已关闭'))Hasil cetakan adalah seperti berikut:
untuk mencipta strim boleh tulis Parameter pertama dihantar dalam fail yang akan ditulis, dan parameter kedua ialah juga digunakan untuk Parameter pilihan konfigurasi, di sini kita menukar fs.createWriteStream()
daripada flags
menunjukkan tulisan ganti kepada 'w'
, iaitu, tambah tulisan (jika kedudukan permulaan tulisan 'a'
juga ditentukan, agar serasi dengan Sistem windows, start
hendaklah ditulis sebagai flags
): 'r+'
const writableStream = fs.createWriteStream('test.txt', { flags: 'a' }) writableStream.write('养成', err => console.log(`错误信息:${err}`)) // 错误信息:undefined writableStream.write('写作的') writableStream.end('好习惯')menulis data melalui kaedah
Hasil daripada melaksanakan kod di atas ialah menambah "naikkan" selepas yang asal "hello juejin" Kembangkan tabiat menulis yang baik." Tulisan terakhir boleh menggunakan kaedah write
, supaya acara end
strim boleh tulis boleh dipantau: 'close'
writableStream.on('close', () => { console.log('关闭') })Jika tidak, strim boleh tulis perlu ditutup secara manual
untuk memantau writableStream.close()
Acara. Jika penulisan berjaya, 'close'
panggilan balik yang dihantar sebagai parameter kedua write()/end()
ialah err
. Strim boleh dibaca undefined
apabila fail dibuka dan acara 'open'
apabila penulisan fail selesai selepas close()
atau end()
dipanggil. 'finish'
untuk menyalin fail: pipe
const readableStream = fs.createReadStream('./test.txt') const writableStream = fs.createWriteStream('./copy.txt') readableStream.pipe(writableStream)Dengan cara ini, teks dalam ./test.txt boleh disalin ke ./copy.txt. Untuk lebih banyak pengetahuan berkaitan nod, sila lawati:
tutorial nodejs!
Atas ialah kandungan terperinci Artikel untuk bercakap tentang strim dalam Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!