面试题答案
一键面试- 主要模块:
fs
模块:用于文件的读取和写入操作,Node.js内置模块,提供了文件系统相关的API。stream
模块:提供了基础的流抽象,在处理大文件时非常有用,Node.js内置模块。其中ReadableStream
用于读取文件,WritableStream
用于写入文件。
- 关键步骤:
- 创建可读流:
const fs = require('fs'); const readableStream = fs.createReadStream('largeFile.csv', { encoding: 'utf8', highWaterMark: 64 * 1024 // 设置缓冲区大小,可根据实际情况调整 });
- 创建可写流:
const writableStream = fs.createWriteStream('outputFile.csv', { encoding: 'utf8' });
- 处理数据:
- 可读流的
data
事件会在有新数据可读时触发。使用split
方法将数据按行分割,逐行处理。
const split = require('split2'); readableStream .pipe(split()) .on('data', (line) => { const userData = line.split(','); const age = parseInt(userData[1]); if (age > 30) { const email = userData[2]; writableStream.write(email + '\n'); } });
- 可读流的
- 处理结束事件:
- 可读流的
end
事件会在文件读取结束时触发,此时关闭可写流。
readableStream.on('end', () => { writableStream.end(); });
- 可读流的
- 创建可读流: