0

約 5 万行以上の非常に大きな CSV ファイルがあります。CHCSVParser を使用して、すべての行を 1 行ずつ解析すると正常に動作します。

データが解析されて CoreData に追加されるときに、ある種の進行状況をユーザーに表示したいと思います。行数がわかっている場合は、numLinesParsed/totalLines を表示できます。なしでCSVファイルの行数を数える高速な方法があるかどうか疑問に思っていました:

  1. すべてをメモリにロードする
  2. 数秒以上かかる

このObjective Cを試してみるべきか、ストレートCでやった方が良いかわかりません。

4

2 に答える 2

1

ファイルのサイズをバイト単位で取得し、1 行あたりの文字数で割るか (各行の文字数が同じ場合)、処理された文字数で割ってパーセンテージを取得してみませんか?

ups: ホルヘ・ヌニェスはもう言った...

于 2013-04-01T19:45:56.727 に答える
1

少なくとも私にとっては、ファイルをメモリにロードせずに行数を取得する方法がCにはないと思います.OSレベルの関数のように思えるからです...

UNIX マシンを使用している場合は、「wc」コマンドを使用して、任意のファイルの行数を取得できます。「system」コマンドを使用してCで実行し、出力を一時ファイルにリダイレクトできるはずです。その後、非常に迅速にアクセスして、そこから行数を解析できます。

Windows を使用している場合は、findstr コマンド 'findstr /R /N "^" file.txt" を使用して行数を取得できます。ファイル. この出力を少し減らすことができると確信していますが、頭の中でこれを行う方法がわかりません.

于 2013-04-01T19:53:03.213 に答える