Stream trong Node.js là gì?

Trong bài viết trước bạn đọc đã cùng Taimienphi.vn tìm hiểu về EventEmitter và Buffer trong Node.js là gì? Bài viết dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về Stream trong Node.js là gì nhé.

Cùng tham khảo tiếp bài viết dưới đây của Taimienphi.vn để tìm hiểu về Stream trong Node.js là gì, ghi và đọc dữ liệu vào Stream như thế nào nhé.

stream trong node js la gi

Tìm hiểu Stream trong Node.js

Mục lục bài viết

1. Stream trong Node.js là gì?
2. Trong Node.js có mấy loại Stream?
3. Đọc dữ liệu từ Stream trong Node.js
4. Ghi dữ liệu tới Stream trong Node.js
5. Khái niệm Piping Stream trong Node.js
6. Khái niệm Chaining Stream trong Node.js

1. Stream trong Node.js là gì?

Stream trong Node.js là các đối tượng giúp đọc dữ liệu từ nguồn và ghi dữ liệu vào đích.

2. Trong Node.js có mấy loại Stream?
Có 4 loại stream trong Node.js, bao gồm:
- Readable: Stream này được sử dụng cho các hoạt động đọc.
- Writable: Stream này được sử dụng cho các hoạt động ghi.
- Duplex: Stream này được sử dụng cho cả hoạt động đọc và ghi.
- Transform: Là một dạng kiểu Duplex stream, kết quả đầu ra được tính dựa trên dữ liệu mà bạn đã nhập vào.
Mỗi stream là một biến thể EventEmitter, phát sinh các sự kiện khác nhau vào các thời điểm khác nhau. Dưới đây là một số sự kiện phổ biến được sử dụng:
- Data: Sự kiện này được kích hoạt khi dữ liệu có sẵn để đọc.
- End: Sự kiện này được kích hoạt khi không có thêm dữ liệu để đọc.
- Error: Sự kiện này được kích hoạt khi có lỗi bất kỳ xảy ra trong quá trình ghi hoặc nhận dữ liệu.
- Finish: Sự kiện này được kích hoạt khi tất cả dữ liệu trong hệ thống bị xóa.
3. Đọc dữ liệu từ Stream trong Node.js
Tạo một file text đặt tên là input.txt có chứa nội dung dưới đây:
Javatpoint is a one of the best online tutorial website to learn different technologies in a very easy and efficient manner.
Tiếp theo tạo một file JavaScript đặt tên là main.js có chứa đoạn mã:

var fs = require("fs");
var data = '';
// Create a readable stream
var readerStream = fs.createReadStream('input.txt');
// Set the encoding to be utf8.
readerStream.setEncoding('UTF8');
// Handle stream events --> data, end, and error
readerStream.on('data', function(chunk) {
data += chunk;
});
readerStream.on('end',function(){
console.log(data);
});
readerStream.on('error', function(err){
console.log(err.stack);
});
console.log("Program Ended");

stream trong node js la gi 2

Bước tiếp theo mở Node.js command prompt và chạy main.js:

node main.js

Kết quả đầu ra:

stream trong node js la gi 3

4. Ghi dữ liệu vào Steam trong Node.js

Tạo một file JavaScript đặt tên là main.js, có chứa đoạn mã dưới đây:

var fs = require("fs");
var data = 'A Solution of all Technology';
// Create a writable stream
var writerStream = fs.createWriteStream('output.txt');
// Write the data to stream with encoding to be utf8
writerStream.write(data,'UTF8');
// Mark the end of file
writerStream.end();
// Handle stream events --> finish, and error
writerStream.on('finish', function() {
console.log("Write completed.");
});
writerStream.on('error', function(err){
console.log(err.stack);
});
console.log("Program Ended");

stream trong node js la gi 4

Bước tiếp theo mở Node.js command prompt và chạy main.js:

node main.js

Kết quả đầu ra có dạng như dưới đây:

stream trong node js la gi 5

Như bạn có thể thấy file text có tên output.txt được tạo tạo vị trí mà file input.txt và file main.js được lưu. Trong ví dụ này là trên màn hình desktop.

Mở file output.txt và trên màn hình bạn sẽ thấy nội dung như dưới đây:

stream trong node js la gi 6

5. Piping Stream là gì?

Piping là cơ chế cung cấp kết quả đầu ra của một Stream để làm dữ liệu đầu vào cho một Stream khác. Piping thường được sử dụng để lấy dữ liệu từ một Stream làm dữ liệu đầu vào cho Stream khác và không có giới hạn nào về hoạt động Piping này. Dưới đây là ví dụ về piping đọc từ một file và ghi vào một file khác.

Tạo một file JavaScript đặt tên là main.js, có chứa đoạn mã dưới đây:

var fs = require("fs");
// Create a readable stream
var readerStream = fs.createReadStream('input.txt');
// Create a writable stream
var writerStream = fs.createWriteStream('output.txt');
// Pipe the read and write operations
// read input.txt and write data to output.txt
readerStream.pipe(writerStream);
console.log("Program Ended");

stream trong node js la gi 7

Bước tiếp theo mở Node.js command prompt và chạy main.js:

node main.js

Kết quả đầu ra:

stream trong node js la gi 8

Bạn có thể thấy file text có tên output.txt được tạo tạo vị trí mà file input.txt và file main.js được lưu. Trong ví dụ này là trên màn hình desktop.

Mở file output.txt và trên màn hình bạn sẽ thấy nội dung như dưới đây:

stream trong node js la gi 9

6. Chaining Stream trong Node.js

Chaining stream là cơ chế tạo chuỗi các hoạt động đa luồng bằng cách kết nối đầu ra của một luồng với luồng khác, và thường được sử dụng kết hợp với piping. Dưới đây là ví dụ kết hợp piping và chaining stream để nén 1 file, sau đó giải nén.

Tạo một file JavaScript đặt tên là main.js, có chứa đoạn mã dưới đây:

var fs = require("fs");
var zlib = require('zlib');
// Compress the file input.txt to input.txt.gz
fs.createReadStream('input.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt.gz'));
console.log("File Compressed.");

stream trong node js la gi 10

Bước tiếp theo mở Node.js command prompt và chạy main.js:

node main.js

Kết quả trả về có dạng:

stream trong node js la gi 11

Bạn có thể thấy file input.txt dược nén và một file mới được tạo có tên input.txt.gz nằm trong cùng vị trí với file hiện tại.

Để giải nén file, bạn nhập đoạn mã dưới đây vào file main.js:

var fs = require("fs");
var zlib = require('zlib');
// Decompress the file input.txt.gz to input.txt
fs.createReadStream('input.txt.gz')
.pipe(zlib.createGunzip())
.pipe(fs.createWriteStream('input.txt'));
console.log("File Decompressed.");

stream trong node js la gi 12

Bước tiếp theo mở Node.js command prompt và chạy main.js:

node main.js

Kết quả trả về có dạng:

stream trong node js la gi 13

https://thuthuat.taimienphi.vn/stream-trong-node-js-la-gi-41307n.aspx
Bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn stream trong Node.js là gì. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết Học Node.js đã có trên Taimienphi.vn để tìm hiểu rõ hơn về cách cài đặt Node.js cũng như Callback trong Node.js là gì nhé.

Tác giả: Nguyễn Cảnh Nam     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

File System (FS) trong Node.js là gì?
Callback trong Node.js là gì?
NPM trong Node.js là gì?
Đối tượng Global trong Node.js
Cách cài đặt Node.js trên Ubuntu 18.04
Từ khoá liên quan:

Stream trong Node.js là gì

, Node.js là gì, Node.js,

SOFT LIÊN QUAN
  • Node.js for Mac

    Xây dựng, phát triển ứng dụng mạng

    Node.js for Mac là nền tảng mã nguồn mở dựa trên ngôn ngữ lập trình JavaScript với tính năng chính là dựng nhanh các ứng dụng web và phát triển các ứng dụng mạng theo mô hình I/O hướng sự kiện không đồng bộ. Với Node.js ...
  • Node.js Nền tảng quản lý và phát triển ứng dụng mạng hiệu quả
  • Bitnami MEAN for Mac Cài đặt, tạo môi trường phát triển Node.js và MongoDB

Tin Mới

  • Cách tra điểm thi trên Trạng Nguyên Tiếng Việt

    Sau khi hoàn tất bài thi, các em học sinh có thể kiểm tra điểm số ngay trên trang web Trạng Nguyên Tiếng Việt để biết được sức học của mình đến đầu, cải thiện việc học của mình hiệu quả. Nếu các em chưa biết tra điểm thì tham khảo ngay cách tra điểm thi trên Trạng Nguyên Tiếng Việt của Taimienphi.vn.

  • Cách cài đặt Font chữ tiểu học, gõ phông chữ tiểu học nhanh nhất

    Nếu bạn chưa biết cách cài Font chữ tiểu học, hãy xem ngay 5 bước đơn giản từ Taimienphi để dễ dàng thiết lập cho máy tính của mình nhé.

  • 1 tỷ có mấy số 0

    Nếu đang cần tính toán, quy đổi các chữ số hàng tỷ ra các con số hàng trăm, vạn, triệu,..., nhưng không nhớ chính xác 1 tỷ có mấy số 0 hay 1 triệu có mấy số 0 thì bài viết này sẽ rất hữu ích với bạn. Vận dụng cách ghi nhớ các số, chữ số hàng tỷ, bạn đọc sẽ nhanh chóng tính toán và quy đổi sang các giá trị tương ứng

  • Cách tải và chơi GTA San Andreas cho Windows 10

    Trong bộ game GTA thì GTA San Andreas là phiên bản kinh điển của series GTA đình đám, vẫn luôn mang đến khoảng thời gian giải trí tuyệt vời dù bạn đã hoàn thành game bao nhiêu lần đi chăng nữa. Trong bài viết này, Taimienphi.vn sẽ điểm qua một vài thông tin về trò chơi, cũng như chia sẻ cho bạn cách tải và chơi GTA San Andreas trên Windows 10.