看完文件读取再看文件写入非常简单,两者的操作几乎一一对应

fs.writeFile

fs.writeFile(file, data[, options], callback)

  1. file:文件名或文件描述符
  2. data:常用的主要是 string 和 buffer
  3. callback(err)

file 是文件名时,则异步地写入数据到文件,如果文件已存在,则覆盖文件内容
file 是文件描述符时,其行为类似于直接调用 fs.write()(推荐)

  1. const fs = require('fs')
  2. const data = Buffer.from('Hello, Node.js')
  3. fs.writeFile('./test.txt', data, err => {
  4. if (err) throw err
  5. console.log('文件已被保存')
  6. })

fs.write

fs.write 有两种重载

  1. fs.write(fd, buffer[, offset[, length[, position]]], callback)
    1. 参数含义和 fs.read 几乎相同
  2. fs.write(fd, string[, position[, encoding]], callback)
    1. 只能把字符串内容全部写入文件

两个的区别就是

  • 使用 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)

  1. ```
  2. Hello, Node.js
  3. Hello, Konsoue

fs.appendFile

fs.appendFile(path, data[, options], callback) :将数据追加到文件尾部,如果文件不存在则创建该文件

  1. const fs = require('fs/promises');
  2. const data = Buffer.from('\nVery Good');
  3. fs.appendFile('./test.txt', data)
  4. .then(res => console.log(res))
  5. .catch(err => console.log(err))
  1. Hello, Node.js
  2. Hello, Konsoue
  3. Very Good

fs.createWriteStream

fs.createWriteStream(path[, options])用来创建一个可写的文件流,options 和 fs.createReadStream 几乎相同
options(比较常用的有)

  • fd: 默认值 null,如果指定了 fd,则会忽略 path 参数,使用指定的文件描述符(不会再次触发 open 事件)
  • mode:默认值 0o666
  • autoClose: 默认值: true,当 errorfinish 事件时,文件描述符会被自动地关闭
  • start: 开始写入文件的位置,不设置默认覆盖

把一个可读流内容写到可写流非常简单

  1. const fs = require('fs');
  2. fs.createReadStream('./test.txt')
  3. .pipe(fs.createWriteStream('./copy.txt'));