Java:优化文件分隔符以获取子文档的读取速度

时间:2013-04-11 13:38:40

标签: java performance file optimization

假设我有一个包含许多子文档的文件

//file.txt

BEGIN_FILE_1
loremipsumloremipsumloremipsum
loremipsumloremipsum
END_FILE_1

BEGIN_FILE_2
cupcakeipsum
cupcakeipsumcupcakeipsum
END_FILE_2

可以使用什么样的定界(或某些更改策略),使得所述子文档的读取速度很快(即,解释定界很快),但更重要的是,子文档的写入速度很快。请注意,容器文件将非常大(100MB左右)。

我打算使用FileWriter来编写文件。

谢谢!

1 个答案:

答案 0 :(得分:0)

通常,最佳策略取决于上下文 - 有多少子文档,每个文档只写一次或更新/修改,是每个已知子文档的大小/至少已知每个子文档的最大大小,哪个操作优先(对于eac h写入操作,将有大约10个读取,或相反)?

假设将添加和读取子文档但未修改子文档,最佳策略可能是使用标题指定文件数,以及每个文件在文件内开始/结束的行。类似的东西 - 第一行总是标题,然后是行1..N FILE1,N + 1..M FILE2,依此类推:

NUMBER_OF_FILES FILE1_NAME FILE1_START FILE1_END FILE2_NAME FILE2_START FILE2_END

这将允许通过仅解析头文件并直接读取此文件而不是通过文档搜索文件来读取任何文件的内容,并且写入只需要修改头文件并写入文件末尾。

如果文件被修改/覆盖但是具有固定大小,则此策略可能仍然有用,因为覆盖操作会很快