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