fs 模块
fs.createReadStream()
fs.createReadStream
方法读取一个文件,以 stream 的形式返回。
const readStream = fs.createReadStream( inputFilePath, { encoding: 'utf8', highWaterMark: 1024 });
该方法的第一个参数是文件的路径,第二个参数是一个配置对象。
配置对象的encoding
属性,决定了fs.createReadStream
方法的返回值。如果该属性为null
,返回的是二进制的 buffer;如果为字符串(比如utf8
),返回的是这种编码的字符串。
配置对象的highWaterMark
属性指定了每次返回的 buffer 或字符串的最大体积(单位字节)。
stream 以事件的形式获取。
readStream.on('data', (chunk) => { console.log('>>> '+chunk);});readStream.on('end', () => { console.log('### DONE ###');});
Node v10 开始,Stream 有异步遍历器(asynchronous iteration)接口(即具有Symbol.asyncIterator
属性),因此可以使用for-await-of
读取。
async function main(inputFilePath) { const readStream = fs.createReadStream(inputFilePath, { encoding: 'utf8', highWaterMark: 1024 });
for await (const chunk of readStream) { console.log('>>> '+chunk); } console.log('### DONE ###');}
参考链接
- Using async iteration natively in Node.js, by Axel Rauschmayer