Hệ thống tập tin trong Node.js

Node triển khai thực hiện tệp I/O bằng cách sử dụng các wrapper (bao bọc) xung quanh các hàm POSIX tiêu chuẩn. Mô-đun Node File System (fs) có thể được nhập bằng cú pháp sau –

var fs = require("fs")

Đồng bộ với không đồng bộ

Mọi phương thức trong mô đun fs đều có các dạng đồng bộ cũng như không đồng bộ. Các phương thức không đồng bộ lấy tham số cuối cùng làm hàm callback hoàn thành và tham số đầu tiên của hàm callback là error (lỗi). Tốt hơn là sử dụng một phương thức không đồng bộ thay vì phương thức đồng bộ, vì phương thức thứ nhất không bao giờ chặn chương trình trong khi thực hiện, trong khi phương thức thứ hai thì không.

Ví dụ

Tạo một tệp văn bản có tên input.txt với nội dung sau –

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Hãy tạo một tệp js có tên main.js với đoạn code sau –

var fs = require("fs");

// Asynchronous read
fs.readFile('input.txt', function (err, data) {
   if (err) {
      return console.error(err);
   }
   console.log("Asynchronous read: " + data.toString());
});

// Synchronous read
var data = fs.readFileSync('input.txt');
console.log("Synchronous read: " + data.toString());

console.log("Program Ended");

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Synchronous read: Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Program Ended
Asynchronous read: Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Mở một tập tin

Cú pháp

Sau đây là cú pháp của phương thức để mở tệp ở chế độ không đồng bộ –

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

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • path – Đây là chuỗi có tên tệp bao gồm đường dẫn.
  • flags – Cờ cho biết hành vi của tệp sẽ được mở. Tất cả các giá trị có thể đã được đề cập dưới đây.
  • mode – Nó đặt chế độ tệp (permission và sticky bits), nhưng chỉ khi tệp được tạo. Nó mặc định là 0666, có thể đọc và ghi.
  • callback – Đây là hàm gọi lại có hai đối số (err, fd).

Flag (Cờ)

Cờ cho các hoạt động đọc/ghi là –

Sr.Không. Cờ & Mô tả
1 r

Mở tệp để đọc. Một ngoại lệ xảy ra nếu tập tin không tồn tại.

2 r +

Mở tệp để đọc và viết. Một ngoại lệ xảy ra nếu tập tin không tồn tại.

3 rs

Mở tệp để đọc ở chế độ đồng bộ.

4 rs +

Mở tệp để đọc và viết, yêu cầu HĐH mở đồng bộ. Xem ghi chú cho ‘rs’ về việc sử dụng này một cách thận trọng.

5 w

Mở tệp để viết. Các tập tin được tạo ra (nếu nó không tồn tại) hoặc cắt ngắn (nếu nó tồn tại).

6 wx

Giống như ‘w’ nhưng thất bại nếu đường dẫn tồn tại.

7 w +

Mở tệp để đọc và viết. Các tập tin được tạo ra (nếu nó không tồn tại) hoặc cắt ngắn (nếu nó tồn tại).

số 8 wx +

Giống như ‘w +’ nhưng không thành công nếu đường dẫn tồn tại.

9 a

Mở tệp để nối thêm. Các tập tin được tạo ra nếu nó không tồn tại.

10 ax

Giống như ‘a’ nhưng thất bại nếu đường dẫn tồn tại.

11 a +

Mở tệp để đọc và nối thêm. Các tập tin được tạo ra nếu nó không tồn tại.

12 ax +

Giống như ‘a +’ nhưng không thành công nếu đường dẫn tồn tại.

Ví dụ

Chúng ta hãy tạo một tệp js có tên main.js có đoạn code sau để mở tệp input.txt để đọc và ghi.

var fs = require("fs");

// Asynchronous - Opening File
console.log("Going to open file!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");     
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to open file!
File opened successfully!

Lấy thông tin tập tin

Cú pháp

Sau đây là cú pháp của phương thức để lấy thông tin về một tệp –

fs.stat(path, callback)

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • path – Đây là chuỗi có tên tệp bao gồm đường dẫn.
  • callback – Đây là hàm gọi lại nhận hai đối số (err, stats) trong đó stats là một đối tượng của loại fs.Stats được in bên dưới trong ví dụ.

Ngoài các thuộc tính quan trọng được in bên dưới trong ví dụ, có một số phương thức hữu ích có sẵn trong lớp fs.Stats có thể được sử dụng để kiểm tra loại tệp. Các phương thức này được đưa ra trong bảng sau.

Sr.Không. Phương thức & Mô tả
1 stats.isFile ()

Trả về true nếu là loại tệp của một tệp đơn giản.

2 stats.isDirectory ()

Trả về true nếu là loại tệp của một thư mục.

3 stats.isBlockDevice ()

Trả về true nếu là loại tệp của thiết bị khối.

4 stats.isCharacterDevice ()

Trả về true nếu là loại tệp của thiết bị ký tự.

5 stats.isSymbolicLink ()

Trả về true nếu là loại tệp của một liên kết tượng trưng.

6 thống kê.isFIFO ()

Trả về true nếu là loại tệp của một FIFO.

7 stats.isSocket ()

Trả về true nếu là loại tệp của asocket.

Ví dụ

Hãy tạo một tệp js có tên main.js với đoạn code sau –

var fs = require("fs");

console.log("Going to get file info!");
fs.stat('input.txt', function (err, stats) {
   if (err) {
      return console.error(err);
   }
   console.log(stats);
   console.log("Got file info successfully!");
   
   // Check file type
   console.log("isFile ? " + stats.isFile());
   console.log("isDirectory ? " + stats.isDirectory());    
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to get file info!
{ 
   dev: 1792,
   mode: 33188,
   nlink: 1,
   uid: 48,
   gid: 48,
   rdev: 0,
   blksize: 4096,
   ino: 4318127,
   size: 97,
   blocks: 8,
   atime: Sun Mar 22 2015 13:40:00 GMT-0500 (CDT),
   mtime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT),
   ctime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT) 
}
Got file info successfully!
isFile ? true
isDirectory ? false

Ghi một tập tin

Cú pháp

Sau đây là cú pháp của một trong những phương thức để ghi vào một tệp –

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

Phương thức này sẽ ghi đè lên tệp nếu tệp đã tồn tại. Nếu bạn muốn ghi vào một tệp hiện có thì bạn nên sử dụng một phương thức khác có sẵn.

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • path – Đây là chuỗi có tên tệp bao gồm đường dẫn.
  • data  – Đây là Chuỗi hoặc Bộ đệm được ghi vào tệp.
  • options – Tham số thứ ba là một đối tượng sẽ giữ {mã hóa, chế độ, cờ}. Theo mặc định. mã hóa là utf8, chế độ là giá trị bát phân 0666. và cờ là ‘w’
  • callback – Đây là hàm gọi lại có một lỗi tham số duy nhất trả về lỗi trong trường hợp có bất kỳ lỗi ghi nào.

Ví dụ

Hãy tạo một tệp js có tên main.js có code sau


var fs = require("fs");

console.log("Going to write into existing file");
fs.writeFile('input.txt', 'Simply Easy Learning!', function(err) {
if (err) {
return console.error(err);
}

console.log("Data written successfully!");
console.log("Let's read newly written data");
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("Asynchronous read: " + data.toString());
});
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to write into existing file
Data written successfully!
Let's read newly written data
Asynchronous read: Simply Easy Learning!

Đọc một tập tin

Cú pháp

Sau đây là cú pháp của một trong những phương pháp để đọc từ một tệp –

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

Phương thức này sẽ sử dụng mô tả tệp để đọc tệp. Nếu bạn muốn đọc tệp trực tiếp bằng tên tệp, thì bạn nên sử dụng phương thức khác có sẵn.

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • fd – Đây là mô tả tập tin được trả về bởi fs.open ().
  • buffer – Đây là bộ đệm mà dữ liệu sẽ được ghi vào.
  • offset – Đây là phần bù trong bộ đệm để bắt đầu ghi tại.
  • length – Đây là một số nguyên chỉ định số lượng byte cần đọc.
  • position – Đây là một số nguyên chỉ định nơi bắt đầu đọc từ trong tệp. Nếu vị trí là null, dữ liệu sẽ được đọc từ vị trí tệp hiện tại.
  • callback – Đây là hàm gọi lại nhận ba đối số, (err, byteRead, buffer).

Ví dụ

Hãy tạo một tệp js có tên main.js với đoạn code sau –

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

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");
   console.log("Going to read the file");
   
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + " bytes read");
      
      // Print only read bytes to avoid junk.
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to open an existing file
File opened successfully!
Going to read the file
97 bytes read
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Đóng tệp

Cú pháp

Sau đây là cú pháp để đóng tệp đã mở –

fs.close(fd, callback)

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • fd – Đây là mô tả tệp được trả về bởi phương thức tệp fs.open ().
  • callback – Đây là chức năng gọi lại Không có đối số nào ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành.

Ví dụ

Hãy tạo một tệp js có tên main.js có code sau –

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

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");
   console.log("Going to read the file");
   
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {
      if (err) {
         console.log(err);
      }

      // Print only read bytes to avoid junk.
      if(bytes > 0) {
         console.log(buf.slice(0, bytes).toString());
      }

      // Close the opened file.
      fs.close(fd, function(err) {
         if (err) {
            console.log(err);
         } 
         console.log("File closed successfully.");
      });
   });
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to open an existing file
File opened successfully!
Going to read the file
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

File closed successfully.

Cắt bớt một tập tin

Cú pháp

Sau đây là cú pháp của phương thức để cắt một tệp đã mở –

fs.ftruncate(fd, len, callback)

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • fd – Đây là mô tả tập tin được trả về bởi fs.open ().
  • len – Đây là độ dài của tệp sau đó tệp sẽ bị cắt ngắn.
  • callback – Đây là hàm gọi lại  No arguments (Không có đối số nào) ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành.

Ví dụ

Hãy tạo một tệp js có tên main.js có đoạn code sau –

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

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");
   console.log("Going to truncate the file after 10 bytes");
   
   // Truncate the opened file.
   fs.ftruncate(fd, 10, function(err) {
      if (err) {
         console.log(err);
      } 
      console.log("File truncated successfully.");
      console.log("Going to read the same file"); 
      
      fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
         if (err) {
            console.log(err);
         }

         // Print only read bytes to avoid junk.
         if(bytes > 0) {
            console.log(buf.slice(0, bytes).toString());
         }

         // Close the opened file.
         fs.close(fd, function(err) {
            if (err) {
               console.log(err);
            } 
            console.log("File closed successfully.");
         });
      });
   });
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to open an existing file
File opened successfully!
Going to truncate the file after 10 bytes
File truncated successfully.
Going to read the same file
Tutorials 
File closed successfully.

Xóa một tập tin

Cú pháp

Sau đây là cú pháp của phương thức để xóa một tệp –

fs.unlink(path, callback)

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • path – Đây là tên tệp bao gồm đường dẫn.
  • callback – Đây là hàm gọi lại Không có đối số nào ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành.

Ví dụ

Hãy tạo một tệp js có tên main.js có code sau –

var fs = require("fs");

console.log("Going to delete an existing file");
fs.unlink('input.txt', function(err) {
   if (err) {
      return console.error(err);
   }
   console.log("File deleted successfully!");
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to delete an existing file
File deleted successfully!

Tạo một thư mục

Cú pháp

Sau đây là cú pháp của phương thức để tạo một thư mục –

fs.mkdir(path[, mode], callback)

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • path – Đây là tên thư mục bao gồm đường dẫn.
  • mode – Đây là quyền thư mục được thiết lập. Mặc định là 0777.
  • callback – Đây là hàm gọi lại Không có đối số nào ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành.

Ví dụ

Hãy tạo một tệp js có tên main.js có code sau –

var fs = require("fs");

console.log("Going to create directory /tmp/test");
fs.mkdir('/tmp/test',function(err) {
   if (err) {
      return console.error(err);
   }
   console.log("Directory created successfully!");
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to create directory /tmp/test
Directory created successfully!

Đọc một thư mục

Cú pháp

Sau đây là cú pháp của phương thức đọc thư mục –

fs.readdir(path, callback)

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • path – Đây là tên thư mục bao gồm đường dẫn.
  • callback – Đây là hàm gọi lại có hai đối số (err, files) trong đó các tệp là một mảng các tên của các tệp trong thư mục loại trừ ‘.’ và ‘..’.

Ví dụ

Hãy tạo một tệp js có tên main.js có code sau –

var fs = require("fs");

console.log("Going to read directory /tmp");
fs.readdir("/tmp/",function(err, files) {
   if (err) {
      return console.error(err);
   }
   files.forEach( function (file) {
      console.log( file );
   });
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test
test.txt

Xóa một thư mục

Cú pháp

Sau đây là cú pháp của phương thức để loại bỏ một thư mục –

fs.rmdir(path, callback)

Tham số

Dưới đây là mô tả về các tham số được sử dụng –

  • path – Đây là tên thư mục bao gồm đường dẫn.
  • callback – Đây là hàm gọi lại Không có đối số nào ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành.

Ví dụ

Hãy tạo một tệp js có tên main.js có code sau –

var fs = require("fs");

console.log("Going to delete directory /tmp/test");
fs.rmdir("/tmp/test",function(err) {
   if (err) {
      return console.error(err);
   }
   console.log("Going to read directory /tmp");
   
   fs.readdir("/tmp/",function(err, files) {
      if (err) {
         return console.error(err);
      }
      files.forEach( function (file) {
         console.log( file );
      });
   });
});

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác nhận đầu ra.

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test.txt

 

 

 

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *