NPM酷库,每天两分钟,了解一个流行NPM库。
昨天,我们了解的Node.js中数据流的处理,并使用through快速创建双向流,今天,我们继续讨论数据流。
我们昨天说到,使用数据流,可以分批读取数据到内存,而不用将文件一次性读取到内存。比如一个非常大文本文件,每一行是一条数据,我们可以每次读取一行,进行处理。
fs.createReadStream(file)
.on('data', function (chunk) {
//...
});
上述代码中,每次流对象的data事件都会传递一个数据块chunk,但是遗憾的是,每个chunk并不是一行,也不是完整的多行,某一行有可能会被分开到两个chunk中,分两次返回,所以我们就需要多做很多额外的工作来处理。
split
split 能够快速实现对流数据块的处理,每一次精确返回一行完整的数据:
fs.createReadStream(file)
.pipe(split())
.on('data', function (chunk) {
//...
});