3

Node v.0.8.9 とそのモジュールを使用していますreadline。エラーfs.readFile()が出て使えません。EISDIR

ファイルから 1 行ずつ読み取り、作業を行ってから (作業が完了したときに) 次の行を読み取りたいと考えています。したがって、次のスニペット (以下を参照) を試してみましたが、for同期作業で を変更すると、同期的に動作しません。

var fs = require('fs');
var readline = require("readline");
var filename = process.argv[2];

readline.createInterface({
    input: fs.createReadStream(filename),
    terminal: false
}).on("line", function(line){
   this.emit("pause", line);
}).on("pause", function(line) {
    console.log("pause");
    console.log(line);
    console.log("doing some work");
    for (var i = 0; i < 1000000000; ++i);
    this.emit("resume");
}).on("resume", function() {
    console.log("resume");
}).on("close", function() {
    console.log("close");
});

問題に光を当てることができますか?

4

2 に答える 2

2

ファイルから 1 行ずつ読み取るのが一般的ですが、NodeJS にはそのような大きなファイルをサポートするための実装がありません。したがって、バッファを使用して実装する必要があります。

これは美しく機能するものです - http://blog.jaeckel.com/2010/03/i-tried-to-find-example-on-using-node.html

于 2012-09-16T05:45:21.283 に答える
0

ただの予感....イベントを発行pause()する代わりに、実際に呼び出してみてください。pause

つまり、次のように変更します。

this.emit("pause", line);

に...

this.pause();

これがうまくいくかどうか教えてください。

于 2012-09-14T18:42:30.393 に答える