nodejs

Đọc và Viết Nội Dung Lên File Sử Dụng Stream Trong NodeJS

Trong bài viết này, tôi sẽ hướng dẫn bạn cách đọc nội dung của một file và cách viết nội dung lên file sử dụng stream trong Node.js.

Trong linux stream được dùng để đọc dữ liệu từ một nguồn nào đó. Nó có thể là dữ liệu từ file hay nhập từ bàn phím.

Đọc Nội Dung File

Để đọc nội dung file chúng ta sẽ sử dụng stream reader trong Node.js. Trước khi tiến hành việc đọc nội dung của file, chúng ta cần tạo một file với tên là test.txt với nội dung như sau:

Dòng 1
Dòng 2
Dòng 3

Tiếp theo ở thư mục chưa file test.txt vừa mới được tạo ra trên bạn tạo một file với tên read_file.js với nội dung như sau:

var fs = require('fs');
var readableStream = fs.createReadStream('test.txt');
var data = '';

readableStream.setEncoding('utf8');

readableStream.on('data', function(chunk) {
    data+=chunk;
});

readableStream.on('end', function() {
    console.log(data);
});

Đoạn mã ở trên sử dụng phương thức createReadStream() của đối tượng fs để tạo một stream reader dùng để đọc nội dung file. Phương thức này nhận tham số truyền vào là tên file cần đọc nội dung:

var readableStream = fs.createReadStream('test.txt');

Tiếp theo chúng ta cần thông báo với node.js rằng nôi dùng file test.txt được encode theo định dạng utf-8:

readableStream.setEncoding('utf8');

Tiếp theo, chúng ta gọi phương thức on() từ stream reader là readableStream được tạo ra ở trên. Và với tham số đầu tiên truyền vào là data và tham số thứ 2 là một hàm callback. Khi tham số đầu là data thì phương thức on() sẽ tiến hành đọc dữ liệu từ stream theo từng khúc một, nghĩa là nó sẽ đọc một phần của file với dung lượng nhất định và sau khi kết thúc một khúc nó mới tiếp tục đọc khúc tiếp theo của nội dung có trong file. Mỗi lần kết thúc việc đọc một khúc dữ liệu chúng ta sẽ lưu trữ nội dung trong file vào biến data, điều này được thực hiện thông qua đối số thứ 2 là hàm callback:

readableStream.on('data', function(chunk) {
    data+=chunk;
});

Cuối cùng chúng ta cũng sử dụng phương thức on() nhưng với đối số đầu nhận giá trị là end và đối số thứ 2 cũng là một hàm callback. Và hàm này chỉ được gọi khi việc đọc dữ liệu trong file test.txt kết thúc hoàn toàn:

readableStream.on('end', function() {
    console.log(data);
});

Khi chạy đoạn mã trên sử dụng terminal bạn sẽ thấy kết quả hiển thị là 3 dòng của file test.txt:

$ node read_file.js

Viết Dữ Liệu Lên File

Quy trình viết dữ liệu lên file diễn ra khá đơn giản:

var fs = require('fs');
var writableStream = fs.createWriteStream('sample.txt');

readableStream.setEncoding('utf8');

readableStream.write('Viết lên file sử dụng Node.js');
readableStream.end();

Ở đây chúng ta sử dụng phương thức createWriteStream để tạo stream writer và sau đó sử dụng 2 phương thức là write()end() để thực hiện việc viết nội dung lên file.

Sau khi thực thi đoạn mã trên sử dụng Node.js trên terminal bạn sẽ thấy một file với tên sample.txt được tạo ra với nội dung bên trong file là:

Viết lên file sử dụng Node.js
Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration