Node.js是一款非常流行的後端JavaScript開發語言,可以進行各種各樣的操作,其中最基礎也最重要的一項就是文件操作。 fs模塊就是 Node.js 執行文件系統操作的核心模塊。
一、fs.writeFile參數
fs.writefile是非同步的文件寫入,在使用該方法時,必須傳入文件名和要寫入文件的內容,除此之外,該方法還支持可選的參數flag, encoding, mode參數,它們的作用分別如下:
1. flag參數:表示打開文件要執行的操作。常用的flag參數值有:
- ‘w’ – 打開文件以進行寫入,如果文件不存在則創建文件。
- ‘a’ – 打開文件以進行追加,如果文件不存在則創建文件。
- ‘wx’ – 如果文件已經存在,則文件寫入失敗。
- ‘ax’ – 類似於’wx’,但是如果路徑中的目錄不存在,則會拋出錯誤。
2. encoding參數:表示寫入文件時所用的字元編碼,默認為utf8。
3. mode參數:表示設置文件的許可權,默認為0o666。
const fs = require('fs');
const data = 'Node.js中fs.writeFile的參數示例\n';
fs.writeFile('file.txt', data, { flag: 'w' }, (err) => {
if (err) throw err;
console.log('The file has been saved!');
});
二、fs.writeFileSync和writefile
除了通過fs.writeFile進行非同步的文件操作外,Node.js還提供了另一個方法,叫做fs.writeFileSync,是同步的文件寫入。
fs.writeFileSync與fs.writeFile的參數設置是一樣的,不同之處是fs.writeFileSync不需要回調函數進行處理,執行寫入之後會立即返回結果,這種方式適合在文件操作不是很頻繁的情況下使用。
const fs = require('fs');
const data = 'Node.js中fs.writeFileSync的示例\n';
fs.writeFileSync('file_sync.txt', data, { flag: 'w' });
console.log('The file has been saved!');
三、fs.writeFileSync報錯
在使用fs.writeFileSync進行文件寫入時,可能會遇到一些錯誤,例如文件已經被鎖定,導致寫入失敗。這時可以通過try-catch語句進行異常處理:
const fs = require('fs');
try {
const data = 'Node.js中fs.writeFileSync的異常捕獲\n';
fs.writeFileSync('file_sync_error.txt', data, { flag: 'wx' });
console.log('The file has been saved!');
} catch (err) {
console.error(err);
}
四、fs.writeFileSync 追加錯誤
通過flag參數設置為’a’,可以在文件中追加內容,但是如果文件不存在,設置為’a’則會報錯,代碼如下:
const fs = require('fs');
try {
const data = 'Node.js中fs.writeFileSync追加內容的報錯\n';
fs.writeFileSync('file_append_error.txt', data, { flag: 'a' });
console.log('The file has been saved!');
} catch (err) {
console.error(err);
}
五、fs.writeFileSync 打開文件錯誤
如果在使用fs.writeFileSync進行寫入時遇到文件打開錯誤,會拋出錯誤信息並拒絕寫入。
const fs = require('fs');
try {
const data = 'Node.js中fs.writeFileSync打開文件失敗\n';
fs.writeFileSync('/invalid_path/file.txt', data, { flag: 'w' });
console.log('The file has been saved!');
} catch (err) {
console.error(err);
}
通過本文的介紹,我們對fs.writefile有了更深入的了解,可以更加靈活地應用文件操作功能進行開發。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159190.html