2012-04-26 35 views
0

我的要求是在文件内写入二进制记录。二进制记录可以被认为是内存中的原始字节。我需要一种分隔每条记录的方式,以便我可以在文件上执行类似于二进制搜索的操作。例如,从文件中间开始,找到下一个分隔的记录并开始搜索。混合ASCII和二进制记录分隔符

我的问题是,ASCII可以用这样的“START-RECORD”来分隔二进制记录吗? 开始记录,数据长度.......二进制数据...........开始记录,数据长度.......二进制数据.... .......

从文件中的任意位置开始,我可以简单地搜索ASCII字符串“START-DATA”。这种方法是否可行?

+0

也许你可以做这样的事情,但我不明白它有多大的帮助。如果记录被排序,二元印章只能起作用。唯一快速的方法是维护一个单独的索引,以便在没有大量文件移动/复制的情况下轻松添加数据。如果已编入索引,则不需要搜索起始字段。 – 2012-04-26 20:17:41

+0

我同意你对二分查找的评论。但是另一种搜索方法是将文件分成任意块,然后将这些块分配给各个线程进行顺序扫描。块不必包含相同数量的记录。因此,一种方法是确定文件中的偏移量,该偏移量将包含完整记录并将这些偏移量分配给线索进行搜索 – Jimm 2012-04-26 20:21:43

回答

1

由于您正在以二进制模式读取或不读取,因此不是一次传递。如果您插入一些字符串或其他模式作为“分隔符”,则需要在读取文件时搜索它的二进制表示形式。