对以UTF格式编写的文件执行二进制搜索

时间:2012-04-16 16:37:34

标签: java

是否有办法按排序顺序对以UTF格式存储的文件执行二进制搜索。我可以使用RandomAccessFile对文本文件执行二进制搜索。首先我找出文件的长度,然后使用fseek跳转到文件的中间位置,跳到中间位置后我读取字节。但是,我发现以UTF格式存储的文件并不可行,因为第一个字符是UTF格式的随机字符。而且对于DataInputStream,我无法跳转到文件中的特定位置。是否可以对这样的文件进行二进制搜索。如果是,那么使用哪些类。

1 个答案:

答案 0 :(得分:1)

是的,有可能。如果跳到文件的中间,首先需要转到最近的记录分隔符,然后使用记录分隔符后面的文本。

根据您所拥有的确切文件格式,换行符,TAB字符或类似内容可用作记录分隔符。

如果它是Unicode编号低于32的字符(NL,CR,TAB满足),则很容易找到记录分隔符。然后您不需要关心多字节UTF-8编码(用于定位分隔符)。如果它是一种宽字符Unicode格式,那么它也不会那么困难。

DataInputStream 是来自随机访问的错误类。 (流式传输与随机访问相反。)请查看RandomAccessFile