美文网首页
nodejs读取本地文件并重新写入

nodejs读取本地文件并重新写入

作者: liwuwuzhi | 来源:发表于2021-04-07 16:09 被阅读0次
    1. 创建项目文件夹 nr,并进入该文件夹
    mkdir nr
    cd nr
    
    1. 用npm初始化一个node项目
    npm init
    

    初始化需要填写项目名称、版本号、描述等。如果想使用默认值,直接回车就可。
    初始化后,nr 项目内容会生成 package.json 文件。

    1. 按照我们需要用的 fspath 模块
    npm add fs path
    

    安装完后生成 node_modules,里面有刚才按照的模块,以及这个两个模块依赖的相关插件。

    1. 根目录下创建一个准备一个 json 文件, nr_data.json
    [{"create_time":"2013-06-06 00:34:20","upload_time":"2013-06-06 20:34:20","vid":{"Fmv_id":"274430","Fstatus":"1","Fvid":"u00138j4hcs"}}]
    

    注意,数据必须是标准的 json 格式。

    1. 根目录下创建一个处理我们想要的数据的文件 nr_util.js
    1. 跟目录下用node命令执行该文件,就能得到想要的数据格式。
    node nr_util.js
    



    node数据的读写可以用 readFile & writeFile
    createReadStream & createWriteStream
    它们的区别是 fs.readFile() 函数会缓冲整个文件。 若要最小化内存成本,则尽可能选择流式,使用 fs.createReadStream()。

    nr_util.js

    readFile & writeFile方法读取:

    const fs = require('fs');
    const path = require('path')
    
    const realFile = path.resolve(__dirname, './nr_data.json')
    const wrideFile = path.resolve(__dirname, './nr_data_formated.json')
    
    fs.readFile(realFile , (err, buffer) => {
      if (err) console.error(err)
    
      let d = buffer.toString() //将二进制的数据转换为字符串
      d = JSON.parse(d) //将字符串转换为json对象
    
      let fomatted = d.map(e => e.vid)
    
      console.log("fomatted:", fomatted)
    
      // fs.writeFile 写入的 data 可以是字符串或 buffer
      // const data = new Uint8Array(Buffer.from(fomatted)) 或
      const data = JSON.stringify(fomatted)
    
      fs.writeFile(wrideFile, data, (err) => {
        if (err) console.error(err);
        console.log('------ dwon -------');
      })
    })
    

    createReadStream & createWriteStream 方法读取:

    const fs = require('fs');
    const path = require('path')
    
    var stream = fs.createReadStream(path.resolve(__dirname, './nr_data.json'))
    var out = fs.createWriteStream(path.resolve(__dirname, './nr_data_formated.json'))
    
    stream.on('data', function (buffer) {
      var d = buffer.toString() //将二进制的数据转换为字符串
      d = JSON.parse(d) //将字符串转换为json对象
    
      let fomatted = d.map(e => e.vid)
    
      console.log("fomatted:", fomatted)
    
      //写入文件只认识字符串或者二进制数,所以把json对象转换成字符串重新写入json文件中
      var data = JSON.stringify(fomatted)
    
      out.write(data)
    })
    
    out.on('open', function (fd) {
      console.log('需要被写入的文件已打开');
    })
    
    stream.on('end', function () {
      //将操作系统缓存区中的数据全部写入文件
      out.end(function () {
        console.log('文件全部写入完毕');
        console.log('共写入' + out.bytesWritten + '数据');
      })
    })
    

    相关文章

      网友评论

          本文标题:nodejs读取本地文件并重新写入

          本文链接:https://www.haomeiwen.com/subject/folukltx.html