2017-01-08 4 views
0

node.jsでZlibライブラリを使用してテキストファイルを解凍しようとしていますが、ファイルのReadstreamコンテンツをGunzipオブジェクトにパイプする際に、ここに私の抜粋です。ファイルnode.jsの解凍時に予期しないエラーが発生する

const fs = require('fs'); 
const zlib = require("zlib"); 

var readable = fs.createReadStream(__dirname + '/greet.txt'); 
var readableGz = fs.createReadStream(__dirname + '/greet.txt.gz'); 
var writableGz = fs.createWriteStream(__dirname + '/greet.txt.gz'); 
var gZip = zlib.createGzip(); 
var gUnZip = zlib.createGunzip(); 

readable.pipe(gZip).pipe(writableGz); // compress file 
readableGz.pipe(gUnZip).on("error", function(e){ // uncompress file 
    console.log("error, " + e); 
}); 

greet.txtは、しかし、エラーイベントが最後の行に達したときにトリガされ、その中にいくつかのランダムなテキスト、およびすでにディレクトリに作成されて使用されているすべてのファイルを、持っている

+0

を。それが読み終わる前に書くのを待つ。 – cartant

+0

私は最初にファイルを圧縮し、その部分をコメントして、圧縮解除しようとするとその部分を実行すると、同じエラーがまだ起きています –

答えて

2

nodeの操作はすべて非同期なので、finishイベントをリッスンする必要があります。ここで

readable.pipe(gZip).pipe(writableGz).on('finish', function() { // finished 
    console.log('Done. Now you can start reading.'); 
}); 

コード取り組んでいる:あなたが執筆と並行して読んでいる

const fs = require('fs'); 
const zlib = require("zlib"); 

var readable = fs.createReadStream('./greet.txt'); 
var writableGz = fs.createWriteStream('./greet.txt.gz'); 
var gZip = zlib.createGzip(); 
var gUnZip = zlib.createGunzip(); 

readable.pipe(gZip).pipe(writableGz).on('finish', function() { // finished 
    console.log('Done. Now you can start reading.'); 
    var readableGz = fs.createReadStream('./greet.txt.gz'); 
    readableGz.pipe(gUnZip).on("error", function (e) { // uncompress file 
     console.log("error, " + e); 
    }); 
}); 
+0

私はこれを試しました:readable.pipe(gZip).pipe(writableGz); \t //圧縮ファイル writableGz.end(関数(){ はconsole.log( '完了ここでは、読書を開始することができます。'); \t readableGz.pipe(gunzipコマンド).on( "エラー"、機能を(E ){\t //ファイルを解凍する \t \t console.log( "error、" + e); \t}); });まだ動作していません –

+0

はい!, .gzファイルは空になりますが、同じエラーが引き続き発生しています –

+0

@PabloMarinoが問題を解決しましたか? –

関連する問題