Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs



Trong các bài hướng dẫn trước, chúng ta đã sử dụng nhiều lần câu lệnh require("fs"). Đây là cú pháp để khai báo mô-đun fs để có thể gọi các phương thức xử lý File I/O hay đọc nghi file trong Node.js. Cú pháp như sau:require("fs"). Đây là cú pháp để khai báo mô-đun fs để có thể gọi các phương thức xử lý File I/O hay đọc nghi file trong Node.js. Cú pháp như sau:


Nội dung chính

  • Khái niệm đồng bộ vs không đồng bộ trong Node.js
  • Mở một File trong Node.js
  • Các Flag được sử dụng cho việc đọc ghi file trong Node.js
  • Đọc thông tin metadata của File trong Node.js
  • Ghi file trong Node.js
  • Đọc dữ liệu từ File trong Node.js
  • Đóng File trong Node.js
  • Truncate một File trong Node.js
  • Xóa File trong Node.js
  • Tạo thư mục trong Node.js
  • Đọc thư mục trong Node.js
  • Xóa thư mục trong Node.js

Khái niệm đồng bộ vs không đồng bộ trong Node.js

Mỗi phương thức trong fs Module có các form đồng bộ và các form không đồng bộ. Các phương thức không đồng bộ nhận một tham số cuối cùng là một hàm callback thực thi khi kết thúc và nhận tham số đầu tiên là một hàm callback để xử lý lỗi. Việc sử dụng các phương thức không đồng bộ là tốt hơn các phương thức đồng bộ, bởi vì các phương thức không đồng bộ không bao giờ khóa trình thực thi chương trình trong khi phương thức đồng bộ thì có.

Ví dụ

Để minh họa hoạt động I/O trong Node.js, đầu tiên bạn tạo input.txt có nội dung:input.txt có nội dung:

Huong dan doc nghi file trong Node.js

Tạo file1.js. Như trên đã trình bày, mỗi phương thức của fs Module đều có hai form là đồng bộ và không đồng bộ. Để đọc dữ liệu, mình sử dụng phương thức readFile() của form không đồng bộ và readFileSync() của form đồng bộ để đọc dữ liệu. Hai phương thức này nhận tham số đầu tiên là tên file để đọc dữ liệu từ đó.file1.js. Như trên đã trình bày, mỗi phương thức của fs Module đều có hai form là đồng bộ và không đồng bộ. Để đọc dữ liệu, mình sử dụng phương thức readFile() của form không đồng bộ và readFileSync() của form đồng bộ để đọc dữ liệu. Hai phương thức này nhận tham số đầu tiên là tên file để đọc dữ liệu từ đó.

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");

Chạy file1.js để xem kết quả:

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs


Cú pháp

Để mở một file trong chế độ không đồng bộ, bạn sử dụng phương thức open() có cú pháp:

fs.open(path, flags[, mode], callback)

Chi tiết tham số:

  • path: Đây là một chuỗi biểu diễn tên file cũng như đường dẫn tới file đó.: Đây là một chuỗi biểu diễn tên file cũng như đường dẫn tới file đó.

  • flags: Biểu diễn hành vi của file được mở. Tất cả các giá trị có thể sẽ được trình bày trong bảng dưới đây.: Biểu diễn hành vi của file được mở. Tất cả các giá trị có thể sẽ được trình bày trong bảng dưới đây.

  • mode: Thiết lập chế độ cho file, các chế độ này chỉ được thiết lập khi file đã được tạo. Giá trị mặc định là 0666, tức là readable và writeable.: Thiết lập chế độ cho file, các chế độ này chỉ được thiết lập khi file đã được tạo. Giá trị mặc định là 0666, tức là readable và writeable.

  • callback: Hàm callback nhận hai tham số, ví dụ (err, fd).: Hàm callback nhận hai tham số, ví dụ (err, fd).


Các Flag được sử dụng cho việc đọc ghi file trong Node.js

FlagMô tả
r Mở file để đọc. Xuất hiện Exception nếu file không tồn tại.
r+ Mở file để đọc và ghi. Xuất hiện Exception nếu file không tồn tại.
rs Mở file để đọc trong chế độ đồng bộ.
rs+ Mở file để đọc và ghi, báo cho Hệ điều hành mở nó trong chế độ đồng bộ.
w Mở file để ghi. Nếu file không tồn tại, nó sẽ tạo file mới.
wx Giống 'w' nhưng hoạt động này thất bại nếu file không tồn tại (tức là nó không tạo file mới).
w+ Mở file để đọc và ghi. Nếu file không tồn tại, nó sẽ tạo file mới.
wx+ Giống 'w+' nhưng hoạt động này thất bại nếu file không tồn tại
a Mở file để append. File sẽ được tạo nếu nó không tồn tại.
ax Giống 'a' nhưng hoạt động này thất bại nếu file không tồn tại.
a+ Mở file để đọc và append. File sẽ được tạo nếu nó không tồn tại.
ax+ Giống 'a+' nhưng hoạt động này thất bại nếu file không tồn tại.

Ví dụ

Để minh họa hoạt động I/O trong Node.js, đầu tiên bạn tạo input.txt có nội dung:file2.js có nội dung như dưới đây. Nội dung file khá giống ví dụ trên, bạn chú ý vào phần flag đã sử dụng ở đây.

var fs = require("fs");
// Hoat dong mo File theo cach thuc khong dong bo
console.log("Chuan bi mo File hien tai!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
  console.log("File duoc mo thanh cong!");     
});

Tạo file1.js. Như trên đã trình bày, mỗi phương thức của fs Module đều có hai form là đồng bộ và không đồng bộ. Để đọc dữ liệu, mình sử dụng phương thức readFile() của form không đồng bộ và readFileSync() của form đồng bộ để đọc dữ liệu. Hai phương thức này nhận tham số đầu tiên là tên file để đọc dữ liệu từ đó.

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs



Cú pháp

Cú pháp

Để mở một file trong chế độ không đồng bộ, bạn sử dụng phương thức open() có cú pháp:fs Module:

Chi tiết tham số:

  • path: Đây là một chuỗi biểu diễn tên file cũng như đường dẫn tới file đó.: Đây là một chuỗi biểu diễn tên file cũng như đường dẫn tới file đó.

  • flags: Biểu diễn hành vi của file được mở. Tất cả các giá trị có thể sẽ được trình bày trong bảng dưới đây.: Là hàm callback nhận hai tham số (err, stats), trong đó stats là một đối tượng của fs.Stats được in ra như trong ví dụ sau.

mode: Thiết lập chế độ cho file, các chế độ này chỉ được thiết lập khi file đã được tạo. Giá trị mặc định là 0666, tức là readable và writeable.fs.Stats còn có một số phương thức hữu ích có thể được sử dụng để kiểm tra kiểu file. Đó là:

callback: Hàm callback nhận hai tham số, ví dụ (err, fd).Mô tả
r Mở file để đọc. Xuất hiện Exception nếu file không tồn tại.
r+ Mở file để đọc và ghi. Xuất hiện Exception nếu file không tồn tại.
rs Mở file để đọc trong chế độ đồng bộ.
rs+ Mở file để đọc và ghi, báo cho Hệ điều hành mở nó trong chế độ đồng bộ.
w Mở file để ghi. Nếu file không tồn tại, nó sẽ tạo file mới.
wx Giống 'w' nhưng hoạt động này thất bại nếu file không tồn tại (tức là nó không tạo file mới).
w+ Mở file để đọc và ghi. Nếu file không tồn tại, nó sẽ tạo file mới.

Ví dụ

Để minh họa hoạt động I/O trong Node.js, đầu tiên bạn tạo input.txt có nội dung:file3.js và sử dụng phương thức stat() của fs Module đã trình bày ở trên:

var fs = require("fs");

console.log("Chuan bi lay thong tin File hien tai!");
fs.stat('input.txt', function (err, stats) {
   if (err) {
       return console.error(err);
   }
   console.log(stats);
   console.log("Lay thong tin File thanh cong!");
   
   // Kiem tra kieu file
   console.log("isFile ? " + stats.isFile());
   console.log("isDirectory ? " + stats.isDirectory());    
});

Tạo file1.js. Như trên đã trình bày, mỗi phương thức của fs Module đều có hai form là đồng bộ và không đồng bộ. Để đọc dữ liệu, mình sử dụng phương thức readFile() của form không đồng bộ và readFileSync() của form đồng bộ để đọc dữ liệu. Hai phương thức này nhận tham số đầu tiên là tên file để đọc dữ liệu từ đó.

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs


Cú pháp

Cú pháp

Để mở một file trong chế độ không đồng bộ, bạn sử dụng phương thức open() có cú pháp:fs Module như sau:

fs.writeFile(filename, data[, options], callback)

Chi tiết tham số:

Chi tiết tham số:

  • path: Đây là một chuỗi biểu diễn tên file cũng như đường dẫn tới file đó.: Đây là một chuỗi biểu diễn tên file cũng như đường dẫn tới file đó.

  • data: Dữ liệu dạng String hoặc Buffer để ghi vào File.: Dữ liệu dạng String hoặc Buffer để ghi vào File.

  • options: Tham số này là một đối tượng giữ {encoding, mode, flag}. Theo mặc định, mã hóa là utf8, mode là giá trị 0666 và flag là 'w': Tham số này là một đối tượng giữ {encoding, mode, flag}. Theo mặc định, mã hóa là utf8, mode là giá trị 0666 và flag là 'w'

  • callback: Hàm callback nhận một tham số là err và được sử dụng để trả về một lỗi nếu xảy ra bất kỳ lỗi nào trong hoạt động ghi: Hàm callback nhận một tham số là err và được sử dụng để trả về một lỗi nếu xảy ra bất kỳ lỗi nào trong hoạt động ghi

Ví dụ

Ví dụ sau minh họa cách ghi dữ liệu vào một file. Tạo file4.js có nội dung như sau:file4.js có nội dung như sau:

var fs = require("fs");

console.log("Chuan bi ghi du lieu vao file hien tai");
fs.writeFile('input.txt', 'Hoc Node.js co ban.',  function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("Ghi du lieu vao file thanh cong!");
   console.log("Doc du lieu vua duoc ghi");
   fs.readFile('input.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("Noi dung file: " + data.toString());
   });
});

Chạy file4.js để xem kết quả:

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs



Đọc dữ liệu từ File trong Node.js

Cú pháp

Để đọc dữ liệu từ một File, bạn sử dụng phương thức read() có cú pháp sau:

fs.read(fd, buffer, offset, length, position, callback)

Phương thức này sẽ sử dụng tham số fd (viết tắt của File Descriptor) để đọc file. Nếu bạn muốn đọc file bởi sử dụng trực tiếp tên file thì bạn nên sử dụng phương thức khác.

Chi tiết về tham số

  • fd: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Đây là Buffer, là nơi dữ liệu được ghi vào.

  • offset: Đây là offset trong Buffer để dữ liệu bắt đầu ghi từ vị trí đó.: Đây là offset trong Buffer để dữ liệu bắt đầu ghi từ vị trí đó.

  • length: Một số nguyên xác định số byte để đọc.: Một số nguyên xác định số byte để đọc.

  • position: Một số nguyên xác định nơi bắt đầu đọc từ trong file. Nếu vị trí là null, dữ liệu sẽ được đọc từ vị trí hiện tại của file.: Một số nguyên xác định nơi bắt đầu đọc từ trong file. Nếu vị trí là null, dữ liệu sẽ được đọc từ vị trí hiện tại của file.

  • callback: Một hàm callback nhận ba tham số, có dạng (err, bytesRead, buffer).: Một hàm callback nhận ba tham số, có dạng (err, bytesRead, buffer).

Ví dụ

Ví dụ sau minh họa cách ghi dữ liệu vào một file. Tạo file4.js có nội dung như sau:file5.js có nội dung sau:

var fs = require("fs");
var buf = new Buffer(1024);

console.log("Chuan bi mo mot File dang ton tai.");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("File duoc mo thanh cong!");
   console.log("Chuan bi doc du lieu tu File da mo");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + " bytes read");
      
      // In so luong byte da doc.
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});

Chạy file4.js để xem kết quả:

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs


Đọc dữ liệu từ File trong Node.js

Cú pháp

Để đọc dữ liệu từ một File, bạn sử dụng phương thức read() có cú pháp sau:

Chi tiết về tham số

  • fd: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Hàm callback nhận một tham số để xử lý trường hợp nếu có exception.

Ví dụ

Ví dụ sau minh họa cách ghi dữ liệu vào một file. Tạo file4.js có nội dung như sau:file6.js có nội dung:

var fs = require("fs");
var buf = new Buffer(1024);

console.log("Chuan bi mo mot File dang ton tai");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("File duoc mo thanh cong!");
   console.log("Chuan bi doc du lieu tu File da mo");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }

      // In so luong byte da doc.
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }

      // Dong mot File vua duoc mo.
      fs.close(fd, function(err){
         if (err){
            console.log(err);
         } 
         console.log("File duoc dong thanh cong.");
      });
   });
});

Chạy file4.js để xem kết quả:

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs



Đọc dữ liệu từ File trong Node.js

Cú pháp

Để đọc dữ liệu từ một File, bạn sử dụng phương thức read() có cú pháp sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
0

Chi tiết về tham số

  • fd: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Là độ dài của file sau khi đã được truncate.

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Hàm callback nhận một tham số để xử lý trường hợp nếu có exception.

Ví dụ

offset: Đây là offset trong Buffer để dữ liệu bắt đầu ghi từ vị trí đó.file7.js có nội dung sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
1

length: Một số nguyên xác định số byte để đọc.

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs


Đọc dữ liệu từ File trong Node.js

Cú pháp

Để đọc dữ liệu từ một File, bạn sử dụng phương thức read() có cú pháp sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
2

Chi tiết về tham số

  • fd: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().: Là tên file hoặc tên đường dẫn trỏ đến file.

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Hàm callback nhận một tham số để xử lý trường hợp nếu có exception.

Ví dụ

offset: Đây là offset trong Buffer để dữ liệu bắt đầu ghi từ vị trí đó.file8.js có nội dung sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
3

length: Một số nguyên xác định số byte để đọc.

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs



Đọc dữ liệu từ File trong Node.js

Cú pháp

Để đọc dữ liệu từ một File, bạn sử dụng phương thức read() có cú pháp sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
4

Chi tiết về tham số

  • fd: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().: Là tên thư mục bao gồm đường dẫn trỏ tới thư mục đó.

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Chế độ xác định các quyền cho phép khi truy cập thư mục. Giá trị mặc định là 0777.

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Hàm callback nhận một tham số để xử lý trường hợp nếu có exception.

Ví dụ

offset: Đây là offset trong Buffer để dữ liệu bắt đầu ghi từ vị trí đó.file9.js có nội dung sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
5

length: Một số nguyên xác định số byte để đọc.

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs


position: Một số nguyên xác định nơi bắt đầu đọc từ trong file. Nếu vị trí là null, dữ liệu sẽ được đọc từ vị trí hiện tại của file.

Cú pháp

Để đọc dữ liệu từ một File, bạn sử dụng phương thức read() có cú pháp sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
6

Chi tiết về tham số

  • fd: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().: Là tên thư mục bao gồm đường dẫn trỏ tới thư mục đó.

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Hàm callback nhận hai tham số, dạng (err, files) trong đó files là một mảng chứa các tên file trong thư mục.

Ví dụ

offset: Đây là offset trong Buffer để dữ liệu bắt đầu ghi từ vị trí đó.file10.js có nội dung sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
7

length: Một số nguyên xác định số byte để đọc.

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs


position: Một số nguyên xác định nơi bắt đầu đọc từ trong file. Nếu vị trí là null, dữ liệu sẽ được đọc từ vị trí hiện tại của file.

Cú pháp

Để đọc dữ liệu từ một File, bạn sử dụng phương thức read() có cú pháp sau:

Chi tiết về tham số

  • fd: Là viết tắt của file descriptor được trả về bởi phương thức fs.open().: Là tên thư mục bao gồm đường dẫn trỏ tới thư mục đó.

  • buffer: Đây là Buffer, là nơi dữ liệu được ghi vào.: Hàm callback nhận một tham số để xử lý trường hợp nếu có exception.

Ví dụ

offset: Đây là offset trong Buffer để dữ liệu bắt đầu ghi từ vị trí đó.file11.js có nội dung sau:

var fs = require("fs"); 
// Phuong thuc doc file khong dong bo
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("Phuong thuc doc file khong dong bo: " + data.toString());
});
// Phuong thuc doc file dong bo
var data = fs.readFileSync('input.txt');
console.log("Phuong thuc doc file dong bo: " + data.toString());
console.log("Ket thuc chuong trinh.");
8

length: Một số nguyên xác định số byte để đọc.

Kết quả:

Hướng dẫn get content file nodejs - lấy tập tin nội dung nodejs