Bagaimanakah Node.js mengendalikan aliran? Bagaimana untuk menetapkan pengekodan strim?

PHPz
Lepaskan: 2023-04-07 13:46:14
asal
566 orang telah melayarinya

Node.js ialah rangka kerja I/O tak segerak dipacu peristiwa, yang boleh dikatakan sebagai persekitaran berjalan JavaScript pada pelayan. Ia digunakan secara meluas untuk I/O berbenang tunggal, tidak menyekat, dipacu peristiwa dan ciri-ciri lain. Semasa memproses strim fail, untuk mengelakkan masalah seperti aksara bercelaru, pengekodan perlu ditetapkan.

Node.js mengendalikan strim

Strim Node.js (Stream) ialah antara muka abstrak yang boleh digunakan untuk memproses pengumpulan data yang besar. Strim melaksanakan penghantaran data dengan cara yang serupa dengan saluran paip, membahagikan data kepada segmen untuk diproses, tanpa perlu menunggu keseluruhan pengumpulan data muncul sebelum meneruskan ke langkah seterusnya. Oleh itu, strim boleh mengurangkan jejak memori dan masa pemprosesan dengan ketara apabila memproses sejumlah besar data atau fail besar.

Node.js mempunyai empat objek aliran asas, iaitu Readable, Writable, Duplex dan Transform. Antaranya, aliran Boleh Dibaca dan Boleh Ditulis adalah yang paling banyak digunakan.

Strim boleh dibaca boleh difahami sebagai strim input, yang membaca data ke dalam Node.js untuk diproses. Strim Boleh Tulis ialah aliran keluaran yang mengeluarkan data ke lokasi sasaran. Dua aliran boleh digabungkan, seperti paip, untuk mengendalikan penghantaran data.

Semasa operasi strim Node.js, masalah aksara Cina bercelaru mungkin berlaku. Pada masa ini kita perlu menetapkan pengekodan untuk menyelesaikan masalah ini.

Tetapkan pengekodan strim

Dalam Node.js, pengekodan strim ditetapkan menggunakan kaedah setEncoding(). Tetapan pengekodan boleh dibuat untuk strim yang boleh dibaca dan boleh ditulis.

Contohnya, tetapkan pengekodan untuk strim boleh dibaca seperti berikut:

const fs = require('fs');

const readableStream = fs.createReadStream('test.txt', 'utf8');
readableStream.setEncoding('utf8');
Salin selepas log masuk

Pada masa ini, strim boleh dibaca akan membaca data dalam segmen mengikut jenis pengekodan dan Data terbahagi keluaran. Begitu juga, untuk strim boleh tulis, anda juga boleh menggunakan kaedah setEncoding() untuk menetapkan pengekodan. Contohnya:

const fs = require('fs');

const writableStream = fs.createWriteStream('output.txt', 'utf8');
writableStream.setEncoding('utf8');
Salin selepas log masuk

Perlu diingat bahawa sebelum versi Node.js V8.0.0, menetapkan pengekodan strim hanya sah untuk rentetan Jika anda ingin membaca dan menulis data binari, anda perlu melakukannya gunakan objek Buffer .

Oleh itu, jika anda ingin menggunakan pengekodan semasa membaca dan menulis data bukan rentetan, anda perlu mensiri dan menyahsiri data semasa membaca dan menulis, seperti berikut:

const fs = require('fs');
const data = { name: 'Node.js' };
const str = JSON.stringify(data);

const readableStream = fs.createReadStream('test.txt', 'binary');
const writableStream = fs.createWriteStream('output.txt', 'binary');
writableStream.write(new Buffer(str, 'utf8'));
Salin selepas log masuk

Dalam ini Dengan cara ini, kita boleh menggunakan pengekodan untuk mengelakkan masalah seperti aksara bercelaru semasa pemprosesan strim Node.js.

Ringkasan

Pemprosesan strim Node.js sangat sesuai untuk memproses set data besar dan fail besar. Semasa memproses data aliran, beri perhatian kepada menetapkan pengekodan untuk mengelakkan masalah seperti aksara Cina yang kacau. Sebelum Node.js V8.0.0, tetapan pengekodan hanya sah untuk rentetan Jika anda perlu memproses data bukan rentetan, anda perlu menggunakan objek Buffer untuk mensiri dan menyahsiri data.

Atas ialah kandungan terperinci Bagaimanakah Node.js mengendalikan aliran? Bagaimana untuk menetapkan pengekodan strim?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan