逐行读取gzipstream
我有一个压缩的gzip文件,我想逐行阅读。
var fs = require('fs') var zlib = require('zlib') var gunzip = zlib.createGunzip() var inp = fs.createReadStream('test.gz') var n = 0 var lineProcessing = function (err, data) { if (!err) { n += 1 console.log ("line: " + n) console.log (data.toString()) } } inp .on('data', function (chunk) { zlib.gunzip (chunk, lineProcessing) }) .on('end', function () { console.log ('ende'); });
我想我需要设置zlib.createGunzip
chunksize,我只读直到下一个\n
。 但是如何dynamic确定呢?
这可能会更容易使用readline
:
const fs = require('fs'); const zlib = require('zlib'); const readline = require('readline'); let lineReader = readline.createInterface({ input: fs.createReadStream('test.gz').pipe(zlib.createGunzip()) }); let n = 0; lineReader.on('line', (line) => { n += 1 console.log("line: " + n); console.log(line); });