Phần 4: File System (P2)
Các phần trước
Phần 1: Biến, Hàm, Kiểu dữ liệu trong Node.JS
Phần 2: Tạo Modules trong Node.JS
Mở File
Để mở một file ở chế độ không đồng bộ, ta dùng phương thức open() với cú pháp:
fs.open('filename', 'flags', function( err, fd ) {}
Ở đây, flags mô tả hành vi của file được. Các giá trị của flags như sau:
Flags | Mô tả |
r | Mở file để đọc. Exception sẽ xuất hiện nếu file không tồn tại |
r+ | Mở file để đọc và ghi. Exception sẽ xuất hiện nếu file không tồn tại |
rs | Mở file để đọc trong chế độ đồng bộ |
rs+ | Mở file để đọc và ghi ở chế độ đồng bộ |
w | Mở file để ghi. File sẽ được tạo mới ( nếu nó không tồn tại ) hoặc truncated ( nếu nó tồn tại ) |
wx | Giống với 'w', nhưng sẽ không hoạt động nếu file không tồn tại |
w+ | Mở file để đọc và ghi. File sẽ được tạo mới ( nếu nó không tồn tại ) hoặc cắt ngắn ( nếu nó tồn tại ) |
wx+ | Giống với 'wx', nhưng sẽ không hoạt động nếu file không tồn tại |
a | Mở file để chèn thêm dữ liệu. File sẽ được tạo nếu nó không tồn tại |
ax | Giống với 'a', nhưng sẽ không hoạt động nếu file không tồn tại |
a+ | Mở file để đọc và chèn thêm dữ liệu. File sẽ được tạo nếu nó không tồn tại |
ax+ | Giống với 'a+', nhưng sẽ không hoạt động nếu file không tồn tại |
Ví dụ:
var fs = require("fs");
console.log("Chuẩn bị mở file");
fs.open('text.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("Mở file thành công!");
});
//Kết quả
//Chuẩn bị mở file
//Mở file thành công!
Lấy thông tin của File
Để lấy thông tin của file, ta dùng phương thức stats(), với cú pháp:
fs.stats('filename', function(err, stats) {}
Ngoài ra phương thức stats() còn có một số thuộc tính để kiếm tra kiểu dữ liệu. Đó là:
Phương thức | Mô tả |
stats.isFile() | Trả về true nếu đó là một file |
stats.isDirectory() | Trả về true nếu đó là một thư mục |
stats.isBlockDevice() | Trả về true nếu đó là một block device |
stats.isCharacterDevice() | Trả về true nếu đó là một character device |
stats.isSymbolicLink() | Trả về true nếu đó là một symbolic link |
stats.isFIFO() | Trả về true nếu đó là một kiểu FIFO |
stats.isSocket() | Trả về true nếu đó là một kiểu Socket |
Ví dụ:
var fs = require("fs");
fs.stat('text.txt', function (err, stats) {
if (err) {
return console.error(err);
}
console.log(stats);
console.log("Lấy thông tin thành công!");
// Kiểm tra kiểu dữ liệu
console.log("isFile ? " + stats.isFile());
console.log("isDirectory ? " + stats.isDirectory());
});
//Kết quả
//Stats {
// dev: 3738489860,
// mode: 33206,
// nlink: 1,
// uid: 0,
// gid: 0,
// rdev: 0,
// blksize: undefined,
// ino: 2814749767269133,
// size: 49,
// blocks: undefined,
// atimeMs: 1522033271821.958,
// mtimeMs: 1522121359647.3086,
// ctimeMs: 1522121359647.3086,
// birthtimeMs: 1522033271821.958,
// atime: 2018-03-26T03:01:11.822Z,
// mtime: 2018-03-27T03:29:19.647Z,
// ctime: 2018-03-27T03:29:19.647Z,
// birthtime: 2018-03-26T03:01:11.822Z }
//Lấy thông tin thành công!
//isFile ? true
//isDirectory ? false
Đóng File
Để đóng một file đang mở, ta dung phương thức close():
fs.close(fd, function(err) {})
//fd là file descriptor, được trả về từ phương thức fs.open()
var fs = require("fs");
var buf = new Buffer(1024);
fs.open('text.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("Mở File thành công!");
console.log("Bắt đầu đọc file");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
// In ra nội dung trong file
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
// Đóng file
fs.close(fd, function(err){
if (err){
console.log(err);
}
console.log("Đóng file thành công.");
});
});
});
//Kết quả
//Mở File thành công!
//Bắt đầu đọc file
//Techmaster VN
//Lập trình Node.JS cơ bản
//
//
//Đóng file thành công.
Cắt ngắn File (Truncate)
Để truncate một file đã mở, ta dùng phương thức ftruncate():
fs.ftruncate(fd, length, function(err) {} )
//fd: file descriptor được trả về từ phương thức open()
//length: độ dài của file mà muốn truncate
var fs = require("fs");
var buf = new Buffer(1024);
fs.open('text.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("File được mở thành công!");
console.log("Truncate file");
// Truncate một file đã được mở.
fs.ftruncate(fd, 10, function(err){
if (err){
console.log(err);
}
console.log("File đã được truncate.");
console.log("Đọc dữ liệu file sau khi truncate");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
// In ra nội dung sau khi truncate.
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
// Đóng file.
fs.close(fd, function(err){
if (err){
console.log(err);
}
console.log("File đã được đóng.");
});
});
});
});
//Kết quả
//File được mở thành công!
//Truncate file
//File đã được truncate.
//Đọc dữ liệu file sau khi truncate
//Techmaster
//File đã được đóng.
Xóa File
Để xóa một file, ta dung phương thức unlink().
var fs = require('fs');
fs.unlink('test.txt', function(err) {
if (err) {
return console.error(err);
}
console.log("Xóa file thành công!");
});
//Kết quả
//Xóa file thành công!
Bình luận