テキスト (ASCII) ファイル内の特定のレコードにランダムにアクセスし、特定の「停止シーケンス」(レコード区切り文字) が見つかるまでそこから読み取る必要があります。ファイルには複数行のレコードが含まれており、各レコードは区切り記号で区切られています。各レコードは、異なる量の行も必要とします! これは特定の専門分野で一般的に知られているファイル形式であり、変更することはできません。
要求されたレコードにすばやくジャンプできるように、ファイルのインデックスを作成したいと考えています。
のような同様の質問で
とその中のリンク、答えは常にのseek()
ようなさまざまなクラスのメソッドを参照しRandomAccessFile
ます。私はそれについて知っています!
私が抱えている問題は、シークに必要なオフセットを取得する方法です! (ファイルの索引付け)
BufferedReader
getFilePointer()
ファイルの先頭から現在のバイトオフセットを取得する方法やその他の方法はありません。RandomAccessFile
メソッドはありますreadLine()
が、そのパフォーマンスはひどいものです。私の場合はまったく使えません。
ファイルを 1 行ずつ読み取る必要があり、レコード区切り文字が見つかるたびにバイト オフセットを取得する必要があります。どうすればこれを達成できますか?