当我们需要逐行读取文件时,可以使用node.js的readline和line-reader模块。下面是具体的攻略:
使用readline模块逐行读取文件
readline模块是node.js中用来逐行读取文件的核心模块,其基本用法如下:
const readline = require('readline');
const fs = require('fs');
const rl = readline.createInterface({
input: fs.createReadStream('path/to/file.txt'),
crlfDelay: Infinity // 注意这一行,满足Windows平台的换行要求
});
rl.on('line', (line) => {
console.log(`读取到一行: ${line}`);
});
rl.on('close', () => {
console.log(`读取完毕!`);
});
以上代码实现了从文件中逐行读取数据,并将每一行数据打印出来。其中,readline模块的createInterface()方法用来创建一个逐行读取的实例,其详细参数说明如下:
- input: 可读流,即要读取的文件流;
- crlfDelay: 满足Windows平台的换行要求,具体为“回车换行”,其值为Infinity表示禁用该功能。
readline逐行读取文件的优点是高效、性能好,缺点是需要写大量的代码。
使用line-reader模块逐行读取文件
line-reader模块是一个开源npm模块,用来逐行读取文件,可以快速地读取大文件。其基本用法如下:
const lineReader = require('line-reader');
lineReader.eachLine('path/to/file.txt', function(line) {
console.log(`读取到一行: ${line}`);
}).then(function() {
console.log(`读取完毕!`);
}).catch(function(err) {
console.error(err);
});
以上代码实现了从文件中逐行读取数据,并将每一行数据打印出来。其中,line-reader模块的eachLine()方法用来逐行读取文件,其详细参数说明如下:
- filename: 要读取的文件名;
- callback: 逐行读取的回调函数;
- options: 可选参数,包括正则表达式、行结束符等。
line-reader逐行读取文件的优点是代码量少、使用方便,缺点是性能不如readline模块好。
综上所述,我们可以根据实际需求选择使用适合的模块来逐行读取文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js readline和line-reader逐行读取文件方法 - Python技术站