0

コマンド ライン ツールを作成しており、この特定のケースで Node JS を使用したいと考えています。

各行で正規表現を実行し、それらを別の関数内で使用したい TXT ファイルがあります。

1) readFileSync または readFile を使用して TXT ファイルを ARRAY にインポート変換し、この配列の要素を処理する必要がありますか?

2) readLines を使用する必要がありますか?

このファイルのサイズは最大 5 MB ですが、時間の経過とともに大きくなります (最大数百)。

3) この特定の目的のために、Python、Ruby、またはその他の言語を使用する必要がありますか? 他の言語でもっと良くなるでしょうか?(最初の 2 つの質問に答えてください。ノードを使用しないという私の能力と、まったく異なるオプションのオプションは不可能かもしれません)

最終的には、このすべてのデータをメモリに保存して、さまざまなタイミングで何度も使用できるようにしたいので、高速である限り、他のソリューションを検討できます。

どうもありがとうございました。

4

1 に答える 1

0

3) Node.js のような非同期のものを使用する必要があります。利点は、ファイルのチャンクを読み取ってその場で処理できることです (ただし、これが発生している間にアプリ全体をブロックしたり、ファイル全体をバッファリングしたりすることはありません)。その後、次のチャンクに移動します。必要に応じて、いつでもストリームを一時停止できます。

2) ファイルを 1 行ずつ読み取る (そして処理する) 必要があると思います。

1) 必ず readStream を選択する必要があります: http://nodejs.org/docs/v0.6.18/api/fs.html#fs_class_fs_readstream

そうすれば、ファイル全体が読み取られる (そしてメモリに保持される) のを待つ必要がなくなります。readStream と Carrier (https://github.com/pgte/carrier) を使用してこれを実現する方法の小さなスニペットを次に示します。

var fs = require('fs'),carrier = require('carrier'), file = 'test.txt', stream;

stream = fs.ReadStream(file, { encoding: 'UTF-8' }); キャリア.キャリー(ストリーム、関数(行){extractWithRegex(行);});

于 2012-05-24T14:44:18.317 に答える