Class SegmentedInputStream

  • All Implemented Interfaces:
    MeasurableStream, Closeable, AutoCloseable

    public class SegmentedInputStream
    extends MeasurableInputStream
    Exhibits a single InputStream as a number of streams divided into reset()-separated segments.

    An instance of this class wraps a given input stream (usually a replicable one, such as a FileInputStream) and exposes its contents as a number of separated input streams. Each such stream, called a block, is defined by a start and a stop position (gaps between blocks are possible). Inside each block we can have one or more segments: each segment is again a separate input stream, but calling reset() moves from one segment to the following one, whereas calling close() moves from a block to the following one.

    An instance of this class is enriched with blocks by calling addBlock(long[]). This can also be done on-the-fly, while the underlying input stream is being scanned.

    Author:
    Alessio Orlandi, Luca Natali, Sebastiano Vigna