2012-04-26 6 views
0

私の要件は、ファイル内にバイナリレコードを書き込むことです。バイナリレコードは、メモリ内の生のバイトと考えることができます。各レコードを区切る方法が必要なので、ファイルのバイナリ検索と同様のことができます。たとえば、ファイルの途中から始め、区切られた次のレコードを見つけて検索を開始します。レコード区切り文字のASCIIとバイナリの混同

私の質問は、ASCIIのような "START-RECORD"を使用してバイナリレコードを区切ることができますか? START-RECORD、data-length、.......バイナリデータ............ START-RECORD、データ長、.......バイナリデータ.... .......

ファイル内の任意の位置から開始するときは、単にASCII文字列「START-DATA」を検索することができます。このアプローチは実現可能か?

+0

多分あなたはこのようなことをすることができますが、それがどのように役立つかはわかりません。バイナリチョップseaarchは、レコードがソートされている場合にのみ動作します。これを行うための唯一の速い方法は、巨大なファイル移動/コピーなしでデータを簡単に追加できるように、別のインデックスを維持することです。索引付けされている場合は、開始フィールドを検索する必要はありません。 –

+0

私はバイナリ検索に関するご意見に同意します。しかし、検索する別の方法は、ファイルを任意のチャンクに分割し、それらのチャンクをさまざまなスレッドに渡して順次スキャンを実行することです。チャンクは、同じ数のレコードを含む必要はありません。したがって、1つの方法は、完全なレコードを含むファイル内のオフセットを決定し、それらのオフセットを検索用のスレッドに割り当てることです – Jimm

答えて

1

バイナリモードで読み込んでいるかどうかを確認しているため、シングルパスではありません。いくつかの文字列や別のパターンを "区切り文字"として挿入すると、そのファイルを読み込んでいる間にバイナリ表現を検索する必要があります。

関連する問題