[Node.js] fs 模組 – 截取檔案內容,並取代原檔案內容

檔案系統模組(fs),都提供了「非同步」和「同步」兩個版本的操作方法,此文章介紹 截取檔案內容,並取代原檔案內容 的操作方式,僅示範同步的方式。

同步方法:fs.ftruncateSync();非同步方法:fs.ftruncate()
以下僅示範「同步」的方法。

「同步」截取檔案內容,並取代原檔案內容:fs.ftruncateSync()

假設有一個檔案「txt/ftruncateSync.txt」,其檔案內容為以下:

abcdefghijklmnog

另有一個程式如下:

var fs = require('fs');

var exec = require('child_process').exec;
var child_pre = exec('cat txt/ftruncateSync.txt', function(error, stdout, stderr){
  console.info('cat txt/ftruncateSync.txt stdout: ');
  console.log(stdout);
  console.log(stderr);

  // 打開檔案(同步方法)
  var fd = fs.openSync('txt/ftruncateSync.txt', 'a'); // 以 "附加" 的方式打開
  fs.ftruncateSync(fd, 10); // 檔案內容截取,僅截取 10 個字元,其餘捨棄
  console.info('File descriptor: ' + fd);
  console.log('fs.ftruncateSync() Done.');
  fs.closeSync(fd);

  var child_suf = exec('cat txt/ftruncateSync.txt', function(error, stdout, stderr){
    console.info('cat txt/ftruncateSync.txt stdout: ');
    console.log(stdout);
    console.log(stderr);
  });
});

執行以上程式後,會發現該檔案的內容,僅剩下(10個字元):

abcdefghij

 

上述程式碼需要使用到 fs.openSync(),因為 fs.ftruncateSync() 需要傳入 file descriptor ,稍嫌麻煩,以下介紹另一個方式,是可以直接傳入檔案路徑即可,不用再經過 fs.openSync() 這樣的步驟。

同樣有「同步( fs.truncateSync() )」與「非同步( fs.truncate() )」兩種方法,這裡僅介紹「同步」方法:

使用 fs.truncate() 修改檔案長度

var fs = require('fs');

var exec = require('child_process').exec;
var child_pre = exec('cat txt/truncateSync.txt', function(error, stdout, stderr){
  console.info('cat txt/truncateSync.txt stdout: ');
  console.log(stdout);
  console.log(stderr);

  fs.truncateSync('txt/truncateSync.txt', 10); // 檔案內容截取,僅截取 10 個字元,其餘捨棄
  console.log('fs.truncateSync() Done.');

  var child_suf = exec('cat txt/truncateSync.txt', function(error, stdout, stderr){
    console.info('cat txt/truncateSync.txt stdout: ');
    console.log(stdout);
    console.log(stderr);
  });
});

您可在此處留言

搶先留言!

Notify of
avatar
wpDiscuz