node 操作文件

178 阅读1分钟

普通文件读写

const fs = require('fs')
const path = require('path')

const fileName = path.resolve(__dirname, 'data.txt')

// 读取文件
fs.readFile(fileName, (err, data) => {
  if (err) {
    console.error(err)
    return
  }
  // data是二进制,类型,需要转换为字符串
  console.log(data.toString())
})

// 写入文件
const content = '这是要写入的内容\n'
const opt = {
  flag : 'a', //追加写。覆盖用 'w'
}

fs.writeFile(fileName, content, opt, (err) => {
  if (err) {
    console.log(err)
  }
})

// 判断文件是否存在
fs.exists(fileName + '1', (exist) => {
  console.log('exist', exist)
})

如果文件特别大的情况写采用stream方式

使用stream可提高性能,节省使用cpu和内存(比如视频不用完全下载下来就可以逐步加载并播放)

// 复制文件
const fs = require('fs')
const path = require('path')

const fileName1 = path.resolve(__dirname, 'data.txt')
const fileName2  = path.resolve(__dirname, 'data-bak.txt')

const readStream = fs.createReadStream(fileName1)
const writeStream = fs.createWriteStream(fileName2)

readStream.pipe(writeStream)

readStream.on('data', chunk => {
  console.log(chunk.toString())
})

readStream.on('end', () => {
  console.log('copy done')
})