10

私の問題は、ファイルが正常に書き込まれ、ファイルが閉じられた時期がわからないことです。次の場合を考えてみましょう。

var fs = require('fs');
var outs = fs.createWriteStream('/tmp/file.txt');
var ins = <some input stream>

...
ins.on('data', function(chunk) { out.write(chunk); });
...
ins.on('end', function() {
   outs.end();
   outs.destroySoon();
   fs.stat('/tmp/file.txt', function(err, info) {

      // PROBLEM: Here info.size will not match the actual number of bytes.
      // However if I wait for a few seconds and then call fs.stat the file has been flushed.
   });
});

では、ファイルにアクセスする前に、ファイルが適切にフラッシュされていることを強制または確認するにはどうすればよいですか?私のコードはファイルを読み取って処理するために外部プロセスを生成する必要があるため、ファイルがそこにあり、完全であることを確認する必要があります。

4

2 に答える 2

10

writeable stream's closeイベントでファイルの後処理を行います。

outs.on('close', function() {
  <<spawn your process>>
});

また、 のdestroySoon後に は必要ありません。endそれらは1 つで同じです。

于 2013-02-01T07:53:12.010 に答える