我有一个压缩的 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
设置一个 block 大小,我只在下一个 \n
之前读取它。但是如何动态确定呢?
最佳答案
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);
});
关于node.js - 逐行读取gzip流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38074288/