Class BoundedReader

java.lang.Object
java.io.Reader
org.apache.commons.io.input.BoundedReader
All Implemented Interfaces:
Closeable, AutoCloseable, Readable

public class BoundedReader extends Reader
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

    • close

      public void close() throws IOException
      Closes the target
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in class Reader
      Throws:
      IOException - If an I/O error occurs while calling the underlying reader's close method
    • mark

      public void mark(int readAheadLimit) throws IOException
      marks the target stream
      Overrides:
      mark in class Reader
      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 Reader
      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
      Specified by:
      read in class Reader
      Parameters:
      cbuf - The buffer to fill
      off - The offset
      len - The number of chars to read
      Returns:
      the number of chars read
      Throws:
      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 Reader
      Throws:
      IOException - If an I/O error occurs while calling the underlying reader's reset method
      See Also: