在使用 Nodejs 做一些脚手架、以及中间服务时,经常会遇到读写文件操作。对于文件内容的更新,我们往往选择"先删除文件,然后再创建文件",复杂且对于文件操作不存在事务特性!

fs.unlink(filePath, err => {})
fs.writeFile(file, data, err => {})

事实上,对于文件具有不同的打开行为,通过打开行为的不同,我们可以实现不同的效果。如:

  • 创建或替换原文件
  • 对已有的原文件进行替换
  • 对已有的原文件追加内容
  • 对已有的原文件从文件开始处覆盖内容
fs.writeFile(file, data[, options], callback)

​options <Object> | <string>​

  • ​encoding <Object> | <string>​​ 设置文件编码,默认值:​'utf8'​
  • ​mode <integer>​​ 设置文件模式(权限), 默认值:​0o666​
  • ​flag <string>​​ 文件打开的行为,默认值:​'w'​

示例

test.txt 文件初始内容为 123

fs.writeFile('test.txt', 'a', { flag: `${flag}` }, () => { console.log('success') })

Flag

描述

test.txt 内容

r

打开文件用于读取。如果文件不存在,则出现异常

‘123’(不变)

r+

打开文件用于读取和写入。如果文件不存在,则出现异常

‘a23’

rs+

以同步模式打开文件用于读取和写入。指示操作系统绕过本地的文件系统缓存(性能有影响

‘a23’

w

打开文件用于写入。如果文件不存在则创建文件,如果文件已存在则截断文件

‘a’

wx

与 ​​'w'​​ 相似,但如果路径已存在则失败

‘123’(不变)

w+

打开文件用于读取和写入。如果文件不存在则创建文件,如果文件已存在则截断文件

a

wx+

与 ​​'w+'​​ 相似(读取和写入),但如果路径已存在则失败

‘123’(不变)

a

打开文件用于追加。如果文件不存在,则创建该文件

‘123a’

ax

与 ​​'a'​​ 相似,但如果路径已存在则失败

‘123’(不变)

a+

打开文件用于读取和追加。如果文件不存在,则创建该文件

‘123a’

ax+

与 ​​'a+'​​ 相似(读取和追加),但如果路径已存在则失败

‘123’(不变)

as

以同步模式打开文件用于追加。如果文件不存在,则创建该文件

‘123a’

as+

以同步模式打开文件用于读取和追加。如果文件不存在,则创建该文件

‘123a’

Node 文件读写模式_文件读写模式

参考地址