2012-04-24 16 views
0

私は、解析され、分析され、モデルを構築できる情報を提供する一連のテキストファイルを用意しています。いつか、このモデルのユーザーは、特定のモデルアイテムを生成するためにテキストファイルのどの部分が使用されたのかを知りたいと考えています。Javaでのテキストファイルの索引付け

私は、必要なときに適切なテキスト部分を読み取るための行(またはバイト)IDの範囲を追跡することを考えています。

私の質問は、始まりのファイルを読み込み、行(バイト)を数えるのではなく、開始行と終了行(またはバイト)IDを使ってファイルを読み取ることができるjava Readerが存在するのだろうか?

敬具

答えて

6

あなたがスキップされるべきバイトの量を正確に、わかっている場合、あなたはあなたがファイルに具体的な位置に移動しInputStream.mark()InputStream.skip()を使用することができますRandomAccessFile

+0

さらに、ラインオフセットを指定することはできず、上から順に読み込む必要はありません。 –

+0

これは本当に完璧な解決策ですね、ありがとう:) – Martin

1

の方法の方法を模索使用することができます。

本当にこれを自分で実装する必要がありますか?おそらくあなたを助ける索引サービスであるLucineを見てください。

+1

テキスト検索が含まれていないので、私はこのタスクのためにLuceneを推奨しません。それは既知のファイルに( "配列インデックス"のように)インデックスを作成することです。 –

+0

私はLuceneについてちょっと知っていますが、私たちは検索するつもりはないので、テキストスライスを取得するだけなので、あまりにも多すぎると思います。 – Martin

2

特定のバイトから読み取るには - SeekableByteChannelです。ラインの区切り文字の位置は不明であるため、ラインIDから始めることができるリーダはありません。

+0

それは素晴らしいようですが、残念ながら1.7の要件は私たちにとって悪いです。 – Martin

関連する問題