ReadStream Nodejs

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ì?

  1. Luồng có thể đọc được là luồng được sử dụng cho các thao tác đọc
  2. Luồng có thể ghi như tên gợi ý là luồng được sử dụng cho các thao tác ghi
  3. Luồng song công là luồng thực hiện cả thao tác đọc và ghi
  4. 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à

  1. Dữ liệu - Sự kiện dữ liệu được phát ra khi có sẵn dữ liệu có thể đọc được
  2. Kết thúc - Sự kiện kết thúc được phát ra khi luồng ghi dữ liệu xong
  3. Lỗi - Sự kiện lỗi được phát ra khi xảy ra lỗi trong khi đọc/ghi dữ liệu
  4. 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);
});
0

Sau đó, 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ình

Tiế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

Làm thế nào để sử dụng Readstream?

createReadStream() cho phép bạn mở một luồng có thể đọc được theo cách rất đơn giản. Tất cả những gì bạn phải làm là chuyển đường dẫn của tệp để bắt đầu truyền trực tuyến . Hóa ra các đối tượng phản hồi (cũng như yêu cầu) là các luồng. Vì vậy, chúng tôi sẽ sử dụng thực tế này để tạo một máy chủ http truyền các tệp đến máy khách.

nút là gì. luồng js?

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.