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) {}
备注:
-
当
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]])
都读到最后了、留下个建议如何