Lập trình Node.JS qua từng bước cơ bản ( Phần 4 )



  • 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

    Phần 3: File System ( P1 )

     

    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!

     


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới LaptrinhX, vui lòng đợi một lúc để chúng tôi thử kết nối lại.