@Override
    public boolean getEntry(long entryNo) throws IOException {
        // Check that this stream is open.
        checkNotClosed();

        // Check bounds.
        final long segmentCount = getSegmentCount();
        if (entryNo < 0 || entryNo >= segmentCount) {
            return false;
        }

        // Check that any stream segment that was previously used has been
        // closed.
        if (!currentEntryClosed) {
            throw new IOException("Current nested stream is not closed");
        }

        // Record the entry we are going to open and create an input stream for
        // the entry.
        currentEntry = entryNo;
        segmentInputStream = new RASegmentInputStream(data, indexInputStream);

        // If this stream has segments, include the requested segment
        // otherwise we will use the whole stream.
        if (segmentCount > 0) {
            segmentInputStream.include(currentEntry);
        }

        // Record that the entry has been opened.
        currentEntryClosed = false;
        return true;
    }
Wrapper for a nested input stream.
<p>
You must call getNextEntry and closeEntry like the ZIP API.
stroom-data/stroom-data-store-impl-fs/src/main/java/stroom/data/store/impl/fs/RANestedInputStream.java