fs 模块
fs.createReadStream()
Section titled “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