Class BoundedReader

All Implemented Interfaces:
Closeable, AutoCloseable, Readable

public class BoundedReader extends ProxyReader
A reader that imposes a limit to the number of characters that can be read from an underlying reader, returning EOF when this limit is reached, regardless of state of underlying reader.

One use case is to avoid overrunning the readAheadLimit supplied to Reader.mark(int), since reading too many characters removes the ability to do a successful reset.

Since:
2.5
  • Constructor Details

    • BoundedReader

      public BoundedReader(Reader target, int maxCharsFromTargetReader)
      Constructs a bounded reader
      Parameters:
      target - The target stream that will be used.
      maxCharsFromTargetReader - The maximum number of characters that can be read from target.
  • Method Details

    • mark

      public void mark(int readAheadLimit) throws IOException
      marks the target stream
      Overrides:
      mark in class ProxyReader
      Parameters:
      readAheadLimit - The number of characters that can be read while still retaining the ability to do #reset(). Note that this parameter is not validated with respect to maxCharsFromTargetReader. There is no way to pass past maxCharsFromTargetReader, even if this value is greater.
      Throws:
      IOException - If an I/O error occurs while calling the underlying reader's mark method.
      See Also:
    • read

      public int read() throws IOException
      Reads a single character
      Overrides:
      read in class ProxyReader
      Returns:
      -1 on EOF or the character read.
      Throws:
      IOException - If an I/O error occurs while calling the underlying reader's read method.
      See Also:
    • read

      public int read(char[] cbuf, int off, int len) throws IOException
      Reads into an array
      Overrides:
      read in class ProxyReader
      Parameters:
      cbuf - The buffer to fill.
      off - The offset.
      len - The number of chars to read.
      Returns:
      the number of chars read.
      Throws:
      NullPointerException - if the buffer is null.
      IndexOutOfBoundsException - if off or len are negative, or if off + len is greater than cbuf.length.
      IOException - If an I/O error occurs while calling the underlying reader's read method.
      See Also:
    • reset

      public void reset() throws IOException
      Resets the target to the latest mark,
      Overrides:
      reset in class ProxyReader
      Throws:
      IOException - If an I/O error occurs while calling the underlying reader's reset method.
      See Also:
    • skip

      public long skip(long n) throws IOException
      Description copied from class: ProxyReader
      Invokes the delegate's skip(long) method.
      Overrides:
      skip in class ProxyReader
      Parameters:
      n - the number of bytes to skip.
      Returns:
      the number of bytes to skipped or EOF if the end of stream.
      Throws:
      IOException - if an I/O error occurs.