2012-04-16 4 views
0

UTF形式で格納されたファイルをソート順にバイナリ検索する方法はありますか? RandomAccessFileを使用してテキストファイルに対してバイナリ検索を実行できます。最初に、ファイルの長さを調べ、fseekを使用してファイルの中央の位置にジャンプし、中間の位置にジャンプしてバイトを読み取ります。しかし、最初の文字はUTF形式でランダムなので、UTF形式で保存されたファイルは実現できません。また、DataInputStreamを使用すると、ファイル内の特定の位置にジャンプすることができません。このようなファイルに対してバイナリ検索を行うことは可能ですか?はいの場合は、どのクラスを使用します。UTF形式で書かれたファイルに対してバイナリ検索を実行する

+0

これはどのようにしてSwingまたはJava-eeに接続しますか?これは、コマンドラインアプリケーションから実行できる純粋なJ2SEです。 –

答えて

1

はい、可能です。ファイルの途中にジャンプする場合は、まず、最も近いレコード区切り文字に移動し、レコード区切り文字の後ろで始まるテキストを使用する必要があります。

あなたが持っている正確なファイル形式に応じて、改行、TAB文字などをレコード区切り記号として使用できます。

レコードセパレータが32より小さいUnicode番号(NL、CR、TABが満たしている)の文字であれば、レコードセパレータを見つけるのは簡単です。次に、マルチバイトUTF-8エンコーディング(セパレータの検索)を気にする必要はありません。ワイド文字のUnicode形式の場合、それほど難しくありません。

DataInputStreamはランダムアクセスから間違ったクラスです。 (ストリーミングはランダムアクセスとは逆のものです)代わりにRandomAccessFileを見てください。

関連する問題