假设您有很多长文本文件,并且只需要从每个文本的第一行提取数据(而无需阅读其他内容)。Node JS做到这一点的最佳方法是什么?
谢谢!
我最终采用了这种解决方案,这似乎是迄今为止我看到的最高效的解决方案:
var fs = require('fs');
var Q = require('q');
function readFirstLine (path) {
return Q.promise(function (resolve, reject) {
var rs = fs.createReadStream(path, {encoding: 'utf8'});
var acc = '';
var pos = 0;
var index;
rs
.on('data', function (chunk) {
index = chunk.indexOf('\n');
acc += chunk;
index !== -1 ? rs.close() : pos += chunk.length;
})
.on('close', function () {
resolve(acc.slice(0, pos + index));
})
.on('error', function (err) {
reject(err);
})
});
}
为了方便起见,我创建了一个名为“ firstline ”的npm模块。
感谢@dandavis的使用建议String.prototype.slice()
!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句