4
我有一個ByteString
的實例。要從中讀取數據,我應該使用它的iterator()
方法。如何獲取ByteString中迭代器的當前位置?
我讀了一些數據,然後決定比我需要創建一個視圖(單獨的一些數據塊的迭代器)。
我不能用原來的迭代器的slice()
,因爲這將使其無法使用,因爲文檔說:
調用此方法後,應該丟棄,它被稱爲在迭代器,並使用只有返回的迭代器。使用舊的 迭代器是未定義的,可能會更改,並且可能導致新迭代器的更改爲 。
所以,看來我需要調用slice()
上ByteString
。但slice()
有from
和until
參數,我不知道from
。我需要的是這樣的:
ByteString originalByteString = ...; // <-- This is my input data
ByteIterator originalIterator = originalByteString .iterator();
...
read some data from originalIterator
...
int length = 100; // < -- Size of the view
int from = originalIterator.currentPosition(); // <-- I need this
int until = from + length;
ByteString viewOfOriginalByteString = originalByteString.slice(from, until);
ByteIterator iteratorForView = viewOfOriginalByteString.iterator(); // <-- This is my goal
更新:
試圖做到這一點與duplicate()
:
ByteIterator iteratorForView = originalIterator.duplicate()._2.take(length);
但我不想複製數據以獲得簡單的只讀視圖。反思很慢。也許我能以另一種方式看待? – bobby 2014-12-19 10:53:59
你不復制數據,只是迭代器。 – lmm 2014-12-19 10:55:20
我更新了這個問題,你可以看看這是否正確? – bobby 2014-12-19 11:05:18