我有一个压缩的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
设置块大小,以便我只读取到下一个\n
。但是如何动态确定它呢?
input
参数使用。 - robertklepzlib.gunzip()
不会返回流,它会在回调函数中返回解压后的数据。你可能需要同时使用zlib.createGunzip()
。 - robertklepdata.pipe(zlib.createGunzip())
进行操作,其中data
是从zlib.gunzip()
得到的被解压缩的缓冲区,但是我收到了一个错误,提示data.pipe(zlib.createGunzip()) 不是一个函数
。你对此有什么想法吗? - Tomas