使用zlib解压缩gz文件

时间:2012-10-05 20:22:07

标签: javascript node.js zlib

我编写了下面的代码来打开一个txt文件并对其执行一些转换,然后将转换写出到一个新文件。原始源文件虽然是gzip'd我无法让zlib模块让节点工作。有人可以展示一个将zlib集成到下面示例中的示例吗?在这种情况下。 bigdata.sql实际上是bigdata.sql.gz,我只是在处理之前手动进行gunzip。答案是制作我自己的对象,并继承流对象吗?

更新

我回答了我自己的问题,而不是问怎么样,也许有人可以告诉我一个更好的方法来做到这一点?或许这是最好的方式......

var fs = require('fs');
var util = require('util');
var stream = require('stream');
var zlib = require('zlib');

console.time('gz decompress')

// inherit from the stream object
function transformStream () {
  this.writable = true;
  this.readable = true;
}

util.inherits(transformStream, stream.Stream);

transformStream.prototype.modifyRow = function (data) {
  // console.log("begin data--->");
    console.log(data.toString('ascii'));
  // console.log("<---end data");
};

transformStream.prototype.write = function(data) {
    this.emit("data", data);
};

transformStream.prototype.end = function() {
    this.emit("end");
    console.timeEnd('gz decompress')
};

transformStream.prototype.destroy = function() {
  this.emit('close');
};

var ts = new transformStream();

ts.on("data", function(data) {
  this.modifyRow(data);
});


path='bigdata.sql.gz';
var file = fs.createReadStream(path).pipe(zlib.createUnzip()).pipe(ts);

0 个答案:

没有答案