2012-04-26 31 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

由於您正在以二進制模式讀取或不讀取,因此不是一次傳遞。如果您插入一些字符串或其他模式作爲「分隔符」,則需要在讀取文件時搜索它的二進制表示形式。