此篇文章瀏覽量:
1,288
檔案系統模組(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); }); });