fs 模块
fs.createReadStream()
fs.createReadStream
方法读取一个文件,以 stream 的形式返回。
该方法的第一个参数是文件的路径,第二个参数是一个配置对象。
配置对象的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