0

多くのサブドキュメントを含むファイルがあるとします

//file.txt

BEGIN_FILE_1
loremipsumloremipsumloremipsum
loremipsumloremipsum
END_FILE_1

BEGIN_FILE_2
cupcakeipsum
cupcakeipsumcupcakeipsum
END_FILE_2

サブドキュメントの読み取りが高速になるように(つまり、区切りの解釈が高速になるように)、どのような種類の区切り(または代替戦略)を使用できますが、さらに重要なことは、サブドキュメントの書き込みが高速になることです。コンテナー ファイルは非常に大きくなることに注意してください (100MB 程度)。

FileWriter を使用してファイルを書き込む予定です。

ありがとう!

4

1 に答える 1

0

一般に、最適な戦略はコンテキストによって異なります - サブドキュメントがいくつあるか、各ドキュメントが一度だけ書き込まれるか、更新/変更されるか、各サブドキュメントのサイズが既知であるか、各サブドキュメントの少なくとも最大サイズが既知であるか、どの操作が優先されるか (書き込み操作ごとに、およそ 10 回の読み取りが行われるか、またはその逆になりますか?

サブドキュメントが追加されて読み取られるが変更されないことを前提として、最適な戦略は、ファイル数を指定するヘッダーと、ファイル内で各ファイルが開始/終了する行を使用することです。次のようなもの - 最初の行は常にヘッダー、次に行 1..N FILE1、N+1..M FILE2 など:

NUMBER_OF_FILES FILE1_NAME FILE1_START FILE1_END FILE2_NAME FILE2_START FILE2_END

これにより、ドキュメントを介してファイルを検索する代わりに、ヘッダーのみを解析してこのファイルを直接読み取ることで、任意のファイルの内容を読み取ることができます。書き込みには、ヘッダーを変更してファイルの最後に書き込むだけで済みます。

ファイルが変更/上書きされてもサイズが固定されている場合、上書き操作が高速になるため、この戦略は依然として有用です。

于 2013-04-11T17:13:01.720 に答える