Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 10: Đọc ghi file với module fs trong Node.js

Ở bài trước chúng ta đã được tìm hiểu về cách khởi tạo một HTTP server bằng module HTTP trong node.js rồi, bài này mình sẽ giới thiệu với mọi người cách đọc ghi file trong node.js với module fs.

1, Module fs là gì?

-Module fs (viết tắt của file system) là một module được tích hợp sẵn trong node.js có chức năng xử lý file, thư mục trong node.js

2, Khai báo sử dụng module fs.

-Cũng giống như các module khác khi chúng ta muốn sử dụng được nó thì chúng ta cần phải require() nó.

Để require module fs chúng ta sử dụng cú pháp:

require('fs');

-Module fs này chứa rất nhiều các function dùng để xử lý file và thư mục. Để xem dạnh sách các phương thức trong module các bạn chỉ cần console.log() module ra.

VD:

var fs = require('fs');
console.log(fs);

3, Đọc file với module fs.

-Để đọc file với module fs chúng ta sử dụng phương thức readFile() với cú pháp:

readFile('pathFile', [option], function(err, data) {
   //
});

Trong đó:

  • pathFile là đường dẫn của file cần đọc.
  • option có thể là chuỗi hoặc mảng chứa các tùy chọn encode hay mode của file, nếu không cần cấu hình thì mọi người có thể bỏ trống.
  • err là biến chứa lỗi nếu có.
  • data là dữ liệu đọc được từ file.

VD: Mình sẽ kết hợp giữa kiến thức của bài trước và bài này để tiến hành đọc code HTML từ một file sang server để hiện thị

Đầu tiên chúng ta sẽ tạo một file code.html với nội dung như sau:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>toidicode.com</title>
    <link rel="stylesheet" href="">
</head>
<style type="text/css" media="screen">
    h1{
        color: orange;
        text-align: center;
    }
</style>
<body>
    <h1>Chào mừng bạn đã đến với website toidicode.com</h1>
</body>
</html>

Tiếp đó chúng ta cần tạo ra một file server.js cùng cấp với file code.html để khởi tạo server và xử lý file.

// khai báo sử dụng module HTTP
var http = require('http');
//Khai báo sử dụng module fs
var fs = require('fs');
//Khởi tạo server chạy cổng 8000
http.createServer(function (req, res) {
    //định dang response head trả về
    res.writeHead('200', {'content-type': 'text/html'});
    //đọc file code.html encode utf8
    fs.readFile('code.html', 'utf8', function (err, data) {
        if (err) throw err;
        // in ra nội dung đọc được
        res.write(data);
        //kết thúc response
        res.end();
    });

}).listen(8000);

Sau đó các bạn chạy file server lên và sẽ nhận được kết quả như sau:

đọc file với module fs

4, Ghi file với module fs.

-Để ghi nội dung mới vào một file thì chúng ta sử dụng phương thức writeFile() với cú pháp:

wireFile('filepath', 'content' , option, callback);

Trong đó:

  • filepath là đường dẫn của file cần ghi.
  • content là nội dung mà chúng ta muốn ghi vào file.
  • option có thể là chuỗi hoặc mảng chứa các tùy chọn encode hay mode của file, nếu không cần cấu hình thì mọi người có thể bỏ trống.
  • callback là đoạn xử lý sau khi ghi file.

 VD: Ghi một nội dung vào một file mới có tên writer.html.

var fs = require('fs');

var content = 'Nội dung này tôi muốn ghi vào file writer.html';
//sử dụng phương thức writeFile để ghi nội dung vào file
fs.writeFile('writer.html', content, 'utf8', function (err) {
    //Kiểm tra nếu có lỗi thì xuất ra lỗi
    if (err)
        throw err;
    else //nếu không thì hiển thị nội dung ghi file thành công
        console.log('Ghi file thanh cong!');
});

5, Lời kết.

-Như vậy mình đã giới thiệu xong với mọi người cơ bản về module fs trong node.js. Module này mình chỉ giới thiệu cơ bản những thứ mình cảm thấy cần thiết đối với mọi người thôi, còn thực sự thì module này hỗ trợ chúng ta khoảng 50-60 phương thức cơ (xem chi tiết).  

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

4 Comments

Anh ơi mongoDB ạ :3

Mạnh Phạm

8 năm trước

ok bạn, mình làm trên cả 3 database luôn :D

Toidicode.com

8 năm trước

MongoDB ạ =))

Trịnh Khang

8 năm trước

ok bạn!

Toidicode.com

8 năm trước

Bình luận

Captcha