web前端技术博客
您当前的位置:web前端 > Node.js

使用nodejs读取超大json文件并保存到多个小文件中

作者:只会切图的前端 发布时间:2023-04-17 20:50:52 浏览量:1

  以下是一个示例代码,可以读取超大的JSON文件,并将其保存到多个小文件中:

  ```javascript

  const fs = require('fs');

  const readline = require('readline'); // 定义输入文件路径和输出文件夹路径

  const inputFilePath = 'input.json';

  const outputFolderPath = 'output'; // 定义每个输出文件的最大行数

  const maxLinesPerFile = 10000; // 创建输出文件夹

  if (!fs.existsSync(outputFolderPath)) {

  fs.mkdirSync(outputFolderPath);

  }

  // 创建读取流

  const readStream = fs.createReadStream(inputFilePath); // 创建逐行读取接口

  const rl = readline.createInterface({ input: readStream, crlfDelay: Infinity });

  let lineCount = 0;

  let fileCount = 0;

  let outputStream = null; // 逐行读取JSON文件

  rl.on('line', (line) => {

  // 如果是第一行,则创建新的输出文件

  if (lineCount === 0) {

  fileCount++;

  outputStream = fs.createWriteStream(`${outputFolderPath}/output_${fileCount}.json`); } // 写入当前行到输出文件

  outputStream.write(`${line}\n`);// 如果当前输出文件的行数达到最大值,则关闭当前输出文件

  if (++lineCount === maxLinesPerFile) {

  lineCount = 0; outputStream.end();

  }

  }); // 当读取结束时,关闭最后一个输出文件

  rl.on('close', () => { if (outputStream) { outputStream.end(); } });

  ```

  这个代码使用了Node.js的`fs`和`readline`模块,通过逐行读取JSON文件,并将每行写入到一个输出文件中。当一个输出文件的行数达到最大值时,就关闭当前输出文件,并创建一个新的输出文件。最终,所有的JSON数据会被保存到多个小文件中。

发表评论
验证码:
联系我
粤ICP备17092958号