Class PeekableInputStream

All Implemented Interfaces:
Closeable, AutoCloseable

Implements a buffered input stream, which allows to peek into the buffers first bytes. This comes in handy when manually implementing scanners, lexers, parsers, and the like.
  • Constructor Details

    • PeekableInputStream

      public PeekableInputStream(InputStream inputStream)
      Constructs a new instance, which filters the given input stream, and uses a reasonable default buffer size (IOUtils.DEFAULT_BUFFER_SIZE).
      Parameters:
      inputStream - The input stream, which is being buffered.
    • PeekableInputStream

      public PeekableInputStream(InputStream inputStream, int bufferSize)
      Constructs a new instance, which filters the given input stream, and uses the given buffer size.
      Parameters:
      inputStream - The input stream, which is being buffered.
      bufferSize - The size of the CircularByteBuffer, which is used internally.
  • Method Details

    • peek

      public boolean peek(byte[] sourceBuffer) throws IOException
      Returns whether the next bytes in the buffer are as given by sourceBuffer. This is equivalent to peek(byte[], int, int) with offset == 0, and length == sourceBuffer.length
      Parameters:
      sourceBuffer - the buffer to compare against
      Returns:
      true if the next bytes are as given
      Throws:
      IOException - Refilling the buffer failed.
    • peek

      public boolean peek(byte[] sourceBuffer, int offset, int length) throws IOException
      Returns whether the next bytes in the buffer are as given by sourceBuffer, {code offset}, and length.
      Parameters:
      sourceBuffer - the buffer to compare against
      offset - the start offset
      length - the length to compare
      Returns:
      true if the next bytes in the buffer are as given
      Throws:
      IOException - if there is a problem calling fillBuffer()