LocationAware
, LineIterator
, Closeable
, AutoCloseable
, Iterator<String>
public class AsciiLineReaderIterator extends Object implements LocationAware, LineIterator, Closeable
AsciiLineReader
.
This class is slower than other LineIterator
s because it is driven by AsciiLineReader
, but offers the benefit of
implementing LocationAware
, which is required for indexing. If you do not require LocationAware
, consider using
LineIteratorImpl
as an alternative to this class.
Note an important distinction in the way this class and its inner iterator differ: in the inner iterator, the position stored with
a line is the position at the start of that line. However, getPosition()
of the outer class must return the position at the
end of the most-recently-returned line (or the start of the underlying AsciiLineReader
, if no line has been read). The latter
bit of logic here is required to conform with the interface described by LocationAware.getPosition()
.Constructor | Description |
---|---|
AsciiLineReaderIterator(AsciiLineReader asciiLineReader) |
Modifier and Type | Method | Description |
---|---|---|
void |
close() |
|
long |
getPosition() |
Returns the byte position at the end of the most-recently-read line (a.k.a., the beginning of the next line) from
next() in
the underlying AsciiLineReader . |
boolean |
hasNext() |
|
String |
next() |
|
String |
peek() |
Peeks at the next line, without expending any elements in the underlying iterator.
|
void |
remove() |
forEachRemaining
public AsciiLineReaderIterator(AsciiLineReader asciiLineReader)
public void close() throws IOException
close
in interface AutoCloseable
close
in interface Closeable
IOException
public long getPosition()
next()
in
the underlying AsciiLineReader
.getPosition
in interface LocationAware
public String peek()
LineIterator
peek
in interface LineIterator