Class PeekableInputStream

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class PeekableInputStream
    extends CircularBufferInputStream
    Implementation of a buffered input stream, which allows to peek into the buffers first bytes. This comes in handy when manually implementing scanners, lexers, parsers, or the like.
    • Constructor Detail

      • PeekableInputStream

        public PeekableInputStream​(InputStream inputStream,
                                   int bufferSize)
        Creates 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.
      • PeekableInputStream

        public PeekableInputStream​(InputStream inputStream)
        Creates a new instance, which filters the given input stream, and uses a reasonable default buffer size (8192).
        Parameters:
        inputStream - The input stream, which is being buffered.
    • Method Detail

      • 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()