Chúng tôi đã nhận được fs đó. ReadStream, chúng tôi có FSWatcher đó, chúng tôi có tổ hợp fs đó. ReadStream và FSWatcher
xuất bản 1. 0. 0 • 7 năm trướcxuất bản 1. 0. 0 7 năm trước
Tạo luồng có thể đọc được theo nội dung đầu vào, nội dung có thể là `Chuỗi`, `Bộ đệm`, `Đối tượng`, `Số`, v.v.
Luồng là đối tượng cho phép nhà phát triển đọc/ghi dữ liệu đến và từ nguồn một cách liên tục. Có bốn loại luồng chính trong Node. js; . Mỗi luồng là một phiên bản eventEmitter
phát ra các sự kiện khác nhau trong một số khoảng thời gian
Bài viết này sẽ đi qua việc đọc và ghi dữ liệu vào tệp bằng cách sử dụng luồng
điều kiện tiên quyết
Để theo dõi bài viết này, bạn sẽ cần có Node. js và có kiến thức cơ bản về Javascript
Bắt đầu nào
Các luồng khác nhau làm gì?
- Luồng có thể đọc được là luồng được sử dụng cho các thao tác đọc
- Luồng có thể ghi như tên gợi ý là luồng được sử dụng cho các thao tác ghi
- Luồng song công là luồng thực hiện cả thao tác đọc và ghi
- Luồng biến đổi là luồng sử dụng đầu vào để tính toán đầu ra
Các luồng ném một số sự kiện vì chúng là các trường hợp eventEmitter
. Những sự kiện này được sử dụng để theo dõi và giám sát luồng
Một số sự kiện được sử dụng phổ biến nhất là
- Dữ liệu - Sự kiện dữ liệu được phát ra khi có sẵn dữ liệu có thể đọc được
- Kết thúc - Sự kiện kết thúc được phát ra khi luồng ghi dữ liệu xong
- Lỗi - Sự kiện lỗi được phát ra khi xảy ra lỗi trong khi đọc/ghi dữ liệu
- Kết thúc - Sự kiện kết thúc được phát ra khi luồng đọc đã đọc xong dữ liệu
Với thông tin này, chúng ta hãy xem cách chúng ta có thể sử dụng luồng để đọc/ghi dữ liệu từ/đến một tệp
Đọc từ một dòng
Việc xử lý các luồng khá đơn giản, tất cả những gì chúng ta phải làm là tạo luồng và xử lý các sự kiện do luồng phát ra
Hãy xem cách chúng tôi làm điều này;
Đầu tiên tạo một thư mục với một tên của sự lựa chọn của bạn. Sau đó, tạo một tệp văn bản bên trong thư mục có tên là đầu vào. txt”
Thêm văn bản sau vào tệp,
Section partners with university computer science programs across the globe to create a community-generated pool of content which is useful for engineers of every [any] level.
Bây giờ hãy tạo một tệp JavaScript có tên là “index. js”
Thêm đoạn mã sau vào tập tin
const fileSystem = require["fs"];
var data = "";
const readStream = fileSystem.createReadStream["input.txt"];
readStream.setEncoding["UTF8"];
readStream.on["data", [chunk] => {
data += chunk;
}];
readStream.on["end", [] => {
console.log[data];
}];
readStream.on["error", [error] => {
console.log[error.stack];
}];
Trong đoạn mã trên, bước đầu tiên là chúng tôi nhập gói hệ thống tệp là gói sẵn có trong Node. js. Sau đó, chúng tôi khởi tạo một biến chuỗi rỗng data
. Câu lệnh sau tạo một luồng đọc thông qua phương thức
const fileSystem = require["fs"];
var data = "";
const readStream = fileSystem.createReadStream["input.txt"];
readStream.setEncoding["UTF8"];
readStream.on["data", [chunk] => {
data += chunk;
}];
readStream.on["end", [] => {
console.log[data];
}];
readStream.on["error", [error] => {
console.log[error.stack];
}];
0Sau đó, chúng tôi đặt mã hóa thành UTF-8. Điều gì tiếp theo tiếp theo xử lý các sự kiện cần thiết. Chúng tôi sử dụng sự kiện dữ liệu để thêm dữ liệu vào biến dữ liệu của mình. Sự kiện kết thúc được sử dụng để xuất dữ liệu đã đọc ra bàn điều khiển. Sự kiện lỗi sẽ ghi lại bất kỳ lỗi nào khi chúng xảy ra
Chạy mã bằng cách viết
node index
Trên thiết bị đầu cuối
Chương trình sẽ xuất dữ liệu chúng tôi đã viết trên đầu vào. tập tin txt
Viết cho một dòng
Bây giờ chúng ta đã biết cách đọc dữ liệu từ một luồng, hãy xem cách chúng ta có thể ghi vào một luồng thay thế. Quy trình tương tự như quy trình đọc. Sự khác biệt duy nhất là lần này chúng ta phải tạo một luồng ghi thay vì
Thay thế mã trên tệp chỉ mục bằng mã sau
const fileSystem = require["fs"];
var data = "Sample text";
const writeStream = fileSystem.createWriteStream["output.txt"];
writeStream.write[data, "UTF8"];
writeStream.end[]
writeStream.on["finish", [] => {
console.log["Finished writing"];
}];
writeStream.on["error", [error] => {
console.log[error.stack];
}];
Trong đoạn mã trên, chúng ta bắt đầu tạo một luồng ghi thông qua phương thức
const fileSystem = require["fs"];
var data = "";
const readStream = fileSystem.createReadStream["input.txt"];
readStream.setEncoding["UTF8"];
readStream.on["data", [chunk] => {
data += chunk;
}];
readStream.on["end", [] => {
console.log[data];
}];
readStream.on["error", [error] => {
console.log[error.stack];
}];
1. Sau đó, chúng tôi sử dụng phương pháp const fileSystem = require["fs"];
var data = "";
const readStream = fileSystem.createReadStream["input.txt"];
readStream.setEncoding["UTF8"];
readStream.on["data", [chunk] => {
data += chunk;
}];
readStream.on["end", [] => {
console.log[data];
}];
readStream.on["error", [error] => {
console.log[error.stack];
}];
0 để ghi dữ liệu vào tệp đầu ra của mìnhTiếp theo ta gọi hàm end để đánh dấu kết thúc file. Điều tiếp theo sau đó là việc thực hiện các sự kiện kết thúc và lỗi
Chạy lại ứng dụng. Bạn sẽ nhận thấy rằng tệp
const fileSystem = require["fs"];
var data = "";
const readStream = fileSystem.createReadStream["input.txt"];
readStream.setEncoding["UTF8"];
readStream.on["data", [chunk] => {
data += chunk;
}];
readStream.on["end", [] => {
console.log[data];
}];
readStream.on["error", [error] => {
console.log[error.stack];
}];
1 được tạo và dữ liệu của chúng tôi được ghi vào tệp đóĐó là tất cả để đọc và viết bằng luồng. Bây giờ chúng ta hãy xem cách truyền luồng
luồng đường ống
Đường ống là một cơ chế liên quan đến việc sử dụng đầu ra của đầu vào luồng khác của luồng khác. Làm thế nào chúng ta có thể đạt được điều này?
Thay thế mã trong chỉ mục. js với mã bên dưới
const fileSystem = require["fs"];
const readStream = fileSystem.createReadStream["input.txt"];
const writeStream = fileSystem.createWriteStream["output.txt"];
readStream.pipe[writeStream];
console.log["Program finished"];
Chương trình khá đơn giản. Tất cả những gì chúng ta cần làm là khởi tạo luồng đọc và ghi, sau đó sử dụng phương thức đường ống của luồng đọc để chuyển nó sang luồng ghi
Chạy chương trình. Hai tệp bây giờ sẽ có nội dung tương tự
Phần kết luận
Trong bài viết này, chúng tôi đã giới thiệu cách sử dụng luồng để đọc và ghi dữ liệu trong tệp. Chúng tôi đã thấy cách xử lý các sự kiện do luồng phát ra
Chúng tôi cũng đã giới thiệu cách kết nối các luồng đọc và ghi [đường ống]. Tôi hy vọng điều này cung cấp cho bạn thông tin bạn cần để bắt đầu sử dụng các luồng trong Nút của bạn. ứng dụng js