1

以下のコードを作成して、txt ファイルを開き、それにいくつかの変換を実行してから、変換を新しいファイルに書き出しました。ただし、元のソース ファイルは gzip されており、ノードの 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);
4

0 に答える 0