使用nodejs读取超大json文件并保存到多个小文件中
以下是一个示例代码,可以读取超大的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数据会被保存到多个小文件中。