Skip to content
目录

关于 fs.read() & fs.write()

原生 fs.read()fs.write() & fs.writev() 这3个方法不同于其它的 fs 模块中的方法:它们的回调函数有3个参数,而不是常规的2个

如果你使用回调版本,它们表现常规。但是,它们的promise版本使用有点不一样😅fs-extra 对这些方法进行了Promise化,类似 util.promisify()

下面是它们promise版本的使用示例:

fs.read()

js
// 使用 Promise
fs.read(fd, buffer, offset, length, position)
  .then(results => {
    console.log(results)
    // { bytesRead: 20, buffer: <Buffer 0f 34 5d ...> }
  })

// 使用 async/await
async function example() {
  const { bytesRead, buffer } = await fs.read(
    	fd, 
    	Buffer.alloc(length), 
    	offset, 
    	length, 
    	position
  )
}

fs.write()

js
// 使用Promise
fs.write(fd, buffer, offset, length, position)
  .then(results => {
    console.log(results)
    // // { bytesWritten: 20, buffer: <Buffer 0f 34 5d ...> }
  })

// 使用 async/await:
async function example () {
  const { bytesWritten, buffer } = await fs.write(
    fd, Buffer.alloc(length), offset, length, position
  )
}

fs.writev()

js
// 使用 async/await
async function example() {
  const { bytesWritten, buffers } = await fs.writev(fd, buffers, position)
}

2022年08月16日10:45:21