在使用 Nodejs 做一些脚手架、以及中间服务时,经常会遇到读写文件操作。对于文件内容的更新,我们往往选择"先删除文件,然后再创建文件",复杂且对于文件操作不存在事务特性!
事实上,对于文件具有不同的打开行为,通过打开行为的不同,我们可以实现不同的效果。如:
- 创建或替换原文件
- 对已有的原文件进行替换
- 对已有的原文件追加内容
- 对已有的原文件从文件开始处覆盖内容
- …
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 | 与 | ‘123’(不变) |
w+ | 打开文件用于读取和写入。如果文件不存在则创建文件,如果文件已存在则截断文件 | a |
wx+ | 与 | ‘123’(不变) |
a | 打开文件用于追加。如果文件不存在,则创建该文件 | ‘123a’ |
ax | 与 | ‘123’(不变) |
a+ | 打开文件用于读取和追加。如果文件不存在,则创建该文件 | ‘123a’ |
ax+ | 与 | ‘123’(不变) |
as | 以同步模式打开文件用于追加。如果文件不存在,则创建该文件 | ‘123a’ |
as+ | 以同步模式打开文件用于读取和追加。如果文件不存在,则创建该文件 | ‘123a’ |
参考地址