2012-04-03 14 views
2

こんにちは誰も私の.datファイルにレコードを取得する方法の効率的な方法を提案することができます。 現在、レコード数を検証するために、ファイル全体を反復処理しています。そして、もう一度私はレコードを1つずつ処理するためにファイル全体を繰り返しています。だから私は、レコードの数を検証し、処理するために、ファイル全体を2回反復する必要があります。レコードの数がほぼ10Kになるのを2回繰り返すのを防ぐより良い方法があるかどうかを知りたいと思っています。Javaでのファイル読み込み

+0

ファイルを自分で作成していますか?もしそうであれば、それはメタデータ(レコード数など)をファイルの先頭または別のファイルに保存するための一般的な(標準ではないにしても)メカニズムです。 –

+1

私は混乱しています。なぜレコードを順番に処理できないのですか?なぜ最初にファイル内のレコード数を知る必要がありますか? –

+0

完全に.datファイルの形式が何であるかによって異なります。たぶんレコードは固定長です。その場合、ファイルの長さをレコードの長さで割ります。ここで他の場所で示唆されているように、レコードの数を含むヘッダーを持つファイル形式の一般的な場所です。または、レコード数を前もって必要としないようにロジックを書き直してください。 –

答えて

0

私は、レコードカウント機能と処理機能を同じループに含めることをお勧めします。すべての作業は、レコードカウント変数をループ外に保持し、ループ内で++演算子を使用してインクリメントすることです機能を並行して実行します。 while/forループでファイルの終わりをチェックすると、すべてが適切に処理されます。

+0

あなたの提案sharmaに感謝します。 .datファイルでは、ヘッダーレコードに総レコード数が含まれています。最初に、ファイルにヘッダーに記載されているreocrd数が含まれているかどうかを評価する必要があります。 – prabhakar

+0

あなたが言いましたように、例えば10kレコードを処理しているときにシングルループで処理しているとしたら、そのレコード数が無効であることがわかりました。私は10kレコードと処理時間をすべてロールバックしましたそれらのレコードを処理するための処理も無駄になります。 – prabhakar

0

あなたが(または少なくともあなたがそのコードへのアクセス権を持っている)他のモジュール内のファイルを作成している場合、あなたは最初の行でRecordCountをを書くことができ、書き込み動作が発生するたびに、あなたはでRecordCountを更新する必要がありますそれに応じて

ファイルを読み取っている間、1回の読み取りでレコード数が検証され、成功した場合はファイルを走査できます。

+0

.datのヘッダーにはレコード数があります。 .datファイルにヘッダーレコードで指定されたレコード数が含まれているかどうかを確認する必要があります。検証すると、1つずつreocrdを処理する必要があります。 – prabhakar

関連する問題