nodejs 寫入文件


一、寫入文件

文檔參考地址

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) {}

備注:

  1. file 是文件名時,異步寫入數據到文件(若文件已存在,則覆蓋文件)

  2. file 是文件描述符時,其行為類似於調用 fs.write()

  3. 簡單來說,若是已存在文件

    1. file 是文件名時,會被覆蓋寫入文件
    2. file 是文件描述符時,不是覆蓋寫入,文件不會被替換,文件的原始數據會被保留
  4. dataBuffer ,則 encoding 會被忽略

let data = new Uint8Array(Buffer.from('Nodejs'))
fs.writeFile(file, data, err => {
    if (err) throw err
    console.log('文件已被寫入')
})
  1. options 是字符串,則該值需是一個 字符串編碼類型
fs.writeFile(file, data, 'utf8', err => {})

二、同步創建文件

功能與參數與該接口的 異步 API 類似,只是參數少了 回調函數

const fs = require('fs')
fs.writeFileSync(file, data[, options])

三、不同寫入方式

options 里面的 flag 參數值表示不同的 文件系統標志

這里表現為:不同的寫入方式

常用的幾種方式

  1. 'a': 打開文件用於追加。如果文件不存在,則創建該文件
  2. 'a+': 打開文件用於讀取和追加。如果文件不存在,則創建該文件
  3. 'as': 打開文件用於追加(在同步模式中)。如果文件不存在,則創建改文件
  4. 'r': 打開文件用於讀取。如果文件不存在,則會發生異常
  5. 'r+': 打開文件用於讀取和寫入。如果文件不存在,則會發生異常
  6. 'w': 打開文件用於寫入。如果文件不存在則創建文件,若存在則截斷文件
  7. '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]])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM