fs.writeFile
fs.writeFile(file, data[, options], callback)
- file:文件名或文件描述符
- data:常用的主要是 string 和 buffer
- callback(err)
当 file
是文件名时,则异步地写入数据到文件,如果文件已存在,则覆盖文件内容
当 file
是文件描述符时,其行为类似于直接调用 fs.write()
(推荐)
const fs = require('fs')
const data = Buffer.from('Hello, Node.js')
fs.writeFile('./test.txt', data, err => {
if (err) throw err
console.log('文件已被保存')
})
fs.write
fs.write 有两种重载
fs.write(fd, buffer[, offset[, length[, position]]], callback)
- 参数含义和 fs.read 几乎相同
fs.write(fd, string[, position[, encoding]], callback)
- 只能把字符串内容全部写入文件
两个的区别就是
- 使用 buffer 可以只将 buffer 中
offset ~ length + offset
的内容写入文件 - 使用字符串只能把字符串内容全部写入文件 ```javascript const fs = require(‘fs’); const util = require(‘util’)
const write = util.promisify(fs.write) const close = util.promisify(fs.close)
const fd = fs.openSync(‘./test.txt’, ‘w’)
const writeData = async (fd) => { const data1 = Buffer.from(‘Hello, Node.js\n’); const data2 = ‘Hello, Konsoue’;
await write(fd, data1) await write(fd, data2)
await close(fd) }
writeData(fd)
```
Hello, Node.js
Hello, Konsoue
fs.appendFile
fs.appendFile(path, data[, options], callback)
:将数据追加到文件尾部,如果文件不存在则创建该文件
const fs = require('fs/promises');
const data = Buffer.from('\nVery Good');
fs.appendFile('./test.txt', data)
.then(res => console.log(res))
.catch(err => console.log(err))
Hello, Node.js
Hello, Konsoue
Very Good
fs.createWriteStream
fs.createWriteStream(path[, options])
用来创建一个可写的文件流,options 和 fs.createReadStream 几乎相同
options(比较常用的有)
- fd: 默认值 null,如果指定了 fd,则会忽略 path 参数,使用指定的文件描述符(不会再次触发 open 事件)
- mode:默认值 0o666
- autoClose: 默认值: true,当
error
或finish
事件时,文件描述符会被自动地关闭 - start: 开始写入文件的位置,不设置默认覆盖
把一个可读流内容写到可写流非常简单
const fs = require('fs');
fs.createReadStream('./test.txt')
.pipe(fs.createWriteStream('./copy.txt'));