簡體   English   中英

快速讀取大型文本文件中的特定字節數據

[英]Reading specific bytes of data from a large text file… quickly

為了論證,假設您有一個巨大的文件來保存地圖保存數據。 一個很好的例子就是Terraria。 他們將所有MapWidth * MapHeight切片數據保存在一個地圖文件中(確實很可怕),但它們只能根據攝像機的位置渲染攝像機中可見的內容(為了平滑起見,還有一些位於外部的瓷磚)。

所以我的問題是,“他們如何從攝像機位置開始實時搜索所有這些數據?”

這將需要潛在地讀取數百萬個圖塊數據,以獲取屏幕坐標。 我了解,如果圖塊數據一致(您在一周左右的搜索中就可以找到),則可以基於x / y坐標跳過數據字節,但這就是我的問題所在。 切片數據是動態的。 如果一個圖塊為空,則不存在超出“ isValid”的數據。 這樣可以減少搜索的字節數。 如果一個圖塊有水,多個狀態,一個背景等,則它包含所有數據,並且最大字節數。 因此,它根本不是恆定的。 在那種情況下,我們不能隨其變化而僅跳過X個字節(恆定地,瓦片被修改)。

我當前的解決方案是:逐行讀取(Ugh),使用塊文件或確保固定的行大小(Padding?數據浪費... Ugh)。

我知道塊將是最好的選擇,但是能夠快速深入到文本文件中仍然是一件好事。

如果您有基於塊的數據,則需要一個基於塊的讀取器,就這么簡單。

另外,如果您僅對數據的某些部分特別感興趣,並且可以首先進行處理,則可以構建第二個文件/列表,該文件/列表存儲到第一個文件中每個對象的起始位置的偏移量。

在這種情況下,每當需要引用對象時,都將先查找偏移量,然后在原始文件中直接跳轉至該偏移量。 它仍然需要您至少一次通讀整個文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM