2012-10-31 4 views
15

ストリームへの書き込み中にEOFに達したときにトリガされるイベントはありますか? 私のコードは以下の通りです。 http://docs.nodejitsu.com/articles/advanced/streams/how-to-use-fs-create-write-streamnode.jsのfs.createWriteStreamに関連付けられたイベント

しかし、私の 'end'イベントは決して解雇されません。私はhttp://nodejs.org/api/stream.html#stream_event_endをチェックすると、私は書き込み可能なストリームが「終了」に任意のイベントを持っていないことがわかり


var x = a1.jpg; 
var options1 = {'url': url_of_an_image, 'encoding': null}; 
var r = request(options1).pipe(fs.createWriteStream('/tmp/imageresize/'+x)); 

r.on('end', function(){ 
    console.log('file downloaded to ', '/tmp/imageresize/'+x); 
} 

どのように私はEOFイベントをキャプチャしていますか?

答えて

48

は、2013年10月30日に

読み取り可能な蒸しemit close event when the underlying resource done writingを更新しました。

r.on('close', function(){ 
    console.log('request finished downloading file'); 
}); 

しかし、あなたはfsは、ディスクにデータを書き終えた瞬間をキャッチしたい場合、あなたはWriteable Stream finish event必要があります。

var w = fs.createWriteStream('/tmp/imageresize/'+x); 

request(options1).pipe(w); 

w.on('finish', function(){ 
    console.log('file downloaded to ', '/tmp/imageresize/'+x); 
}); 
+0

おかげにレオニードを。私はそれを試してみましょう!すぐに更新されます。 – user644745

+0

はい。それは働いている。再度、感謝します。 – user644745

+0

closeイベントは、すべてのコンテンツがディスクにフラッシュされたか、またはOSの書き込みバッファに残っている可能性があることを意味しますか?プロセスを終了するのはいつ安全ですか? – BHP

関連する問題