美文网首页
读取文件的两种方式

读取文件的两种方式

作者: 我背井离乡了好多年 | 来源:发表于2021-05-05 14:10 被阅读0次
  // 读本地文件并获取进度
  ipcMain.on('importToLocalDataByJsonFile', (event, arg) => {
    let readStream = fs.createReadStream(arg.filePath)
    let totalSize = fs.statSync(arg.filePath).size  // 通过 fs.statSync 获取文件大小
    let curSize = 0
    let percent = '0%'
    let arr = []
    readStream.on('data', (chunk) => {
      // chunk 数据块
      // 计算当前读取到的文件的大小,计算读取的顺序
      // chunk 是一个 buffer 对象
      // 每一次读取到了一点数据,将该数据的长度累加起来 / 文件的总大小 * 100 得到百分比
      curSize += chunk.length
      // 将已经读取到的字节数 / 总字节数 * 100 = 百分比
      percent = (curSize / totalSize * 100).toFixed(2) + '%'
      console.log('读取中' + percent)
      arr.push(chunk)
    })

    // end 事件监听读写结束
    readStream.on('end', (chunk) => {
      console.log('读取结束')
      console.log(Buffer.concat(arr).toString())
      event.returnValue = ''
    })
  })

  // 读取本地json文件
  ipcMain.on('importToLocalDataByJsonFile2', (event, arg) => {
    // G:\gs_books\8.0electron\electron_gyy\static\mongodb\exportData\1.json  arg{filePath,tableName}
    let filePath = arg.filePath
    fs.readFile(filePath, async function (err, data) {
      if (err) {
        event.returnValue = {code: 0}
        return console.error(err)
      }
      let fileData = JSON.parse(data.toString())

      fileData.length > 0 && fileData.forEach(item => {
        if (item.trainingPlanEntity) {
          delete item.trainingPlanEntity
        }
        if (item.trainingDesignStateUpAndDowns) {
          delete item.trainingDesignStateUpAndDowns
        }
        item.trainingDesignRelevanceList.length > 0 && item.trainingDesignRelevanceList.forEach(ele => {
          ele.netList.forEach(uu => {
            uu.subject && delete uu.subject
            uu.subjects && delete uu.subjects
          })
        })
      })
      // insert会把数组里面的东西全部导入
      // 集合名是在modal里面定义的
      await trainListModal.collection.insert(fileData, (err, docs) => {
        if (err) {
          event.returnValue = {code: 0}
        } else {
          event.returnValue = {code: 1}
        }
      })
    })
  });

相关文章

网友评论

      本文标题:读取文件的两种方式

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