node写入文件的几种方式


node写入文件的几种方式

R  :  只读方式打开  
W  :  写入方式打开  覆盖写
A  :  写入方式打开  追加写
同步写入

// sync.js

const fs = require('fs')

// 同步写入
// 打开文件
const fd = fs.openSync('./json/sync.txt', 'a')
// 准备写入的数据
const str = '我爱你 塞北的雪\n'

// 写入
fs.writeSync(fd, str, 'utf-8')

// 关闭资源
fs.closeSync(fd)

// node ... 便被写入sync.txt

sync.txt (追加写)

我爱你 塞北的雪
我爱你 塞北的雪
异步写入
// async.js
const fs = require('fs')

// 写入的资源
const str = '曾经沧海难为水,除却巫山不是云。复次花丛懒回顾,边缘修道半缘君。'
fs.open('./json/async.txt', 'w', (error, fd) => {
  if (error) {
    console.log(error);
  } else {
    //写入文件
    fs.write(fd, str, error => {
      error ? console.log('写入失败') : console.log('写入成功');
    })

    fs.close(fd, error => {
      error ? console.log('关闭失败') : console.log('关闭成功');
    })
  }
})

async.txt (覆盖写)

曾经沧海难为水,除却巫山不是云。复次花丛懒回顾,边缘修道半缘君。
简单写入
// easy.js
const fs = require('fs')
// * 读取json 和存入 json都一定要序列化和反序列化
const bookObj = {
  "book_name": "我当阴阳先生的那几年",
  "book_price": 38,
  "book_page": 700,
  "book_author": "崔走召"
}

// 简单写入
fs.readFile('./json/1.json', 'utf-8', (error, data) => {
  if (!error) {
    const newData = JSON.parse(data)
    bookObj.book_id = newData[newData.length - 1].book_id + 1;
    console.log(newData, bookObj);
    newData.push(bookObj)
    fs.writeFile('./json/1.json', JSON.stringify(newData), { encoding: 'utf-8', flag: 'w' }, e => {
      e ? console.log('添加失败') : console.log('添加成功');
    })
  }
})

1.json

[
  {
    "book_id": 1,
    "book_name": "我当道士那些年",
    "book_price": 40,
    "book_page": 800,
    "book_author": "仐三"
  },
  {
    "book_name": "我当阴阳先生的那几年",
    "book_price": 38,
    "book_page": 700,
    "book_author": "崔走召",
    "book_id": 2
  }
]
流式写入
// strame.js
const fs = require('fs')

// 流式写入适合写入大批量的数据
// 创建一个可写的流,流式操作一般都是使用a方式进行写入
let ws = fs.createWriteStream('./json/stream.txt', { flags: 'a', encoding: 'utf-8' })

ws.on('open', () => {
  console.log('流已经打开');
})

ws.write('你好 世界\n')

ws.on('close', () => {
  console.log('流关闭了...');
})

// 结束操作
ws.end()

strame.txt

你好 世界
你好 世界
你好 世界
你好 世界
你好 世界
other
// dataOpera.js
const fs = require('fs')

console.log('fs', fs);

// readFileSync 写入的似乎是 buffer数据类型, 需要使用toString 方法转换
let result = fs.readFileSync('./json/snow.text')

console.log('result', result, result.toString());

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录