一、寫入文件
1. 常用寫入文件方式
const fs = require('fs')
const path = require('path')
let file = path.resolve(__dirname, './file.txt')
let data = {
a: 1
}
// 異步寫入數據到文件
fs.writeFile(file, JSON.stringify(data, null, 4), { encoding: 'utf8' }, err => {})
2. 語法說明
/*
* 異步寫入數據到文件,(若存在文件,則覆蓋寫入)
* @param file {string | Buffer | URL | integer} 文件名或文件描述符
* @param data {string | Buffer | TypeArray | DataView} 寫入文件的數據
* @param options {Object | string}
* encoding {string | null}, 編碼方式,默認值是 'utf8'
* mode {integer}, 默認值是 0o666
* flag {string}, 寫入方式,默認值是 'w',打開文件用於寫入。
* 如果文件不存在則創建文件,如果文件存在則截斷文件
* @param callback {Function} 回調函數
* err {Error} 寫入文件內容時拋出的錯誤
*/
function writeFile(file, data[, options], callback) {}
備注:
-
當
file
是文件名時,異步寫入數據到文件(若文件已存在,則覆蓋文件) -
當
file
是文件描述符時,其行為類似於調用fs.write()
, -
簡單來說,若是已存在文件
file
是文件名時,會被覆蓋寫入文件file
是文件描述符時,不是覆蓋寫入,文件不會被替換,文件的原始數據會被保留
-
若
data
是Buffer
,則encoding
會被忽略
let data = new Uint8Array(Buffer.from('Nodejs'))
fs.writeFile(file, data, err => {
if (err) throw err
console.log('文件已被寫入')
})
- 若
options
是字符串,則該值需是一個字符串編碼類型
fs.writeFile(file, data, 'utf8', err => {})
二、同步創建文件
功能與參數與該接口的 異步 API 類似,只是參數少了 回調函數
const fs = require('fs')
fs.writeFileSync(file, data[, options])
三、不同寫入方式
options
里面的 flag
參數值表示不同的 文件系統標志
這里表現為:不同的寫入方式
常用的幾種方式
- 'a': 打開文件用於追加。如果文件不存在,則創建該文件
- 'a+': 打開文件用於讀取和追加。如果文件不存在,則創建該文件
- 'as': 打開文件用於追加(在同步模式中)。如果文件不存在,則創建改文件
- 'r': 打開文件用於讀取。如果文件不存在,則會發生異常
- 'r+': 打開文件用於讀取和寫入。如果文件不存在,則會發生異常
- 'w': 打開文件用於寫入。如果文件不存在則創建文件,若存在則截斷文件
- 'w+': 打開文件用於讀取和寫入。如果文件不存在則創建文件,若存在則截斷文件
可以點擊查看更多 文件系統標志
四、其他類似 Api
點擊查看更多
API 詳情
fs.write(fd, buffer[, offset[, length[, position]]], callback)
fs.write(fd, string[, position[, encoding]], callback)
fs.writeSync(fd, buffer[, offset[, length[, position]]])
fs.writeSync(fd, string[, position[, encoding]])