Nút triển khai Tệp I/O bằng cách sử dụng các trình bao bọc đơn giản xung quanh các chức năng POSIX tiêu chuẩn. Có thể nhập mô-đun Hệ thống tệp nút (fs) bằng cú pháp sau –
var fs = require("fs")
Đồng bộ vs Không đồng bộ
Mọi phương thức trong mô-đun fs đều 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 gọi lại hàm callback và tham số đầu tiên của hàm gọi lại là lỗi. Phương thức không đồng bộ không bao giờ chặn chương trình trong khi thực thi nhưng bạn phải xử lý callback, trong khi phương thức thứ hai xử lý tuần tự.
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 để chúng tôi tạo một tệp js có tên main.js với đoạn mã 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 minh đầ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!!!!!
Các phần tiếp theo trong chương này cung cấp một tập hợp các ví dụ hay về các phương pháp File I/O chính.
Mở file
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)
Thông 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 (quyền và bit dính), nhưng chỉ khi tệp được tạo. Nó mặc định là 0666, có thể đọc và ghi được.
- callback − Đây là hàm gọi lại có hai đối số (err, fd).
flags
Cờ cho hoạt động đọc/ghi là –
STT. | Cờ & Mô tả |
---|---|
1 | r
Mở tệp để đọc. Một ngoại lệ xảy ra nếu tệp không tồn tại. |
2 | r+
Mở tệp để đọc và ghi. Một ngoại lệ xảy ra nếu tệp không tồn tại. |
3 | rs
Mở tệp để đọc ở chế độ đồng bộ. |
4 | rs +
Mở tệp để đọc và ghi, yêu cầu hệ điều hành mở tệp đồng bộ. Xem ghi chú cho ‘rs’ về việc sử dụng điều này một cách thận trọng. |
5 | w
Mở tệp để viết. Tệp được tạo (nếu nó không tồn tại) hoặc bị cắt bớt (nếu nó tồn tại). |
6 | wx
Giống như ‘w’ nhưng không thành công nếu đường dẫn tồn tại. |
7 | w+
Mở tệp để đọc và ghi. Tệp được tạo (nếu nó không tồn tại) hoặc bị cắt bớt (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. Tệp được tạo nếu nó không tồn tại. |
10 | ax
Giống như ‘a’ nhưng không thành công nếu đường dẫn tồn tại. |
11 | a+
Mở tệp để đọc và nối thêm. Tệp được tạo 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ụ
Hãy để chúng tôi tạo một tệp js có tên main.js có đoạn mã 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 minh đầu ra.
Going to open file! File opened successfully!
Nhận thông tin tệp
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)
Thông 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 pháp này được đưa ra trong bảng sau.
Sơ Không. | Phương pháp & Mô tả |
---|---|
1 | stats.isFile()
Trả về true nếu loại tệp của một tệp đơn giản. |
2 | stats.isDirectory()
Trả về true nếu loại tệp của một thư mục. |
3 | stats.isBlockDevice()
Trả về true nếu loại tệp của thiết bị khối. |
4 | stats.is CharacterDevice()
Trả về true nếu loại tệp của thiết bị ký tự. |
5 | stats.isSymbolicLink()
Trả về true nếu loại tệp của một liên kết tượng trưng. |
6 | stats.isFIFO()
Trả về true nếu loại tệp là FIFO. |
7 | stats.isSocket()
Trả về true nếu 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 mã 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 minh đầ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
Viết nội dung lên một file
cú pháp
Sau đây là cú pháp của một trong các phương thức để ghi vào tệp –
fs.writeFile(filename, data[, options], callback)
Phương pháp 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 pháp khác có sẵn.
Thông số
Dưới đây là mô tả về các tham số được sử dụng –
- đường dẫn – Đây là chuỗi có tên tệp bao gồm đường dẫn.
- dữ liệu – Đây là Chuỗi hoặc Bộ đệm được ghi vào tệp.
- tùy chọn − Tham số thứ ba là một đối tượng sẽ chứa {encoding, mode, flag}. Theo mặc định. mã hóa là utf8, chế độ là giá trị bát phân 0666. và cờ là ‘w’
- gọi lại − Đây là hàm gọi lại nhận một tham số duy nhất err trả về lỗi trong trường hợp có bất kỳ lỗi viết nào.
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js có mã 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 minh đầ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 các phương thức để đọc từ một tệp –
fs.read(fd, buffer, offset, length, position, callback)
Phương pháp này sẽ sử dụng bộ 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 một phương pháp khác có sẵn.
Thông số
Dưới đây là mô tả về các tham số được sử dụng –
- fd − Đây là bộ mô tả tệp đượ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.
- length – Đây là một số nguyên chỉ định số byte cần đọc.
- position – Đây là một số nguyên chỉ định vị trí bắt đầu đọc 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, bytesRead, bộ đệm).
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js với đoạn mã 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 minh đầ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 một file
cú pháp
Sau đây là cú pháp để đóng một tệp đã mở –
fs.close(fd, callback)
Thông số
Dưới đây là mô tả về các tham số được sử dụng –
- fd − Đây là bộ 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 khác ngoài một ngoại lệ có thể được đưa ra cho hàm gọi lại hoàn thành.
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js có mã 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 minh đầ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 bớt một tệp đã mở –
fs.ftruncate(fd, len, callback)
Thông số
Dưới đây là mô tả về các tham số được sử dụng –
- fd − Đây là bộ mô tả tệp được trả về bởi fs.open().
- len − Đây là độ dài của tệp mà sau đó tệp sẽ bị cắt bớt.
- gọi lại − Đây là chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho hàm gọi lại hoàn thành.
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js có mã 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 minh đầ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)
Thông số
Dưới đây là mô tả về các tham số được sử dụng –
- đường dẫn – Đây là tên tệp bao gồm đường dẫn.
- gọi lại − Đây là chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho hàm gọi lại hoàn thành.
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js có mã 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 minh đầ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)
Thông 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à chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho hàm gọi lại hoàn thành.
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js có mã 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 minh đầ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 một thư mục –
fs.readdir(path, callback)
Thông 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 nhận hai đối số (err, tệp) trong đó tệp là một mảng tên của các tệp trong thư mục không bao gồm ‘.’ và ‘..’.
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js có mã 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 minh đầ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 để xóa một thư mục –
fs.rmdir(path, callback)
Thông 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à chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho hàm gọi lại hoàn thành.
Ví dụ
Hãy để chúng tôi tạo một tệp js có tên main.js có mã 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 minh đầu ra.
Going to read directory /tmp ccmzx99o.out ccyCSbkF.out employee.ser hsperfdata_apache test.txt