7
私は、Node.jsの下でテキストファイルを非同期で行ごとに読み込もうとしています。私は、次のCoffeeScriptのコードを持っている:Node.js readlineにファイルの最後の行がありませんか?
readline = require 'readline'
fs = require 'fs'
#--------------------------------------------------------------------
lines_of = (route, handler) ->
#..................................................................
stream = readline.createInterface
input: fs.createReadStream route
output: process.stdout
terminal: false
#..................................................................
stream.on 'close', ->
handler null, null
#..................................................................
stream.on 'error', (error) ->
handler error
#..................................................................
stream.on 'line', (line) ->
handler null, line
それはそれは改行で終了されない限り、報告されることはありませんファイルの非常に最後の行を除いて正常に動作します。これを修正する方法はありますか(もちろん、改行を手動で追加することを除いて)?
ファイルが大きすぎない場合は、単純に 'readFile'を使用して' \ n'で分割しますか? – WiredPrairie
ええ、これは間違いなくreadlineの目的ではありません。ファイルを読むのではなく、シェルやREPLを作っていたらreadlineを使います。あなたは 'fs'モジュールを望んでいます:http://nodejs.org/api/fs.html –
あなたのコメントは私に、正確かつ技術的に紛争があると訴えます。結局のところ、「ハッキング」はすべて適切な道具を適切に使うことに関するものです。ストリームの抽象化では、ファイル、http要求、標準的なキーボードイベントではなく、データの流れを見るように指示します。つまり、もしreadlineが 'ダングルビット(dangling bits)'(改行の前ではなく入力ストリームが終了した後)を伝える方法を持っていなければ、* API *であり、意図した目的ではなく*このライブラリを悪くする手元にある作業に合ってください。 – flow