Class BoundedReader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Readable

    public class BoundedReader
    extends java.io.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 Summary

      Constructors 
      Constructor Description
      BoundedReader​(java.io.Reader target, int maxCharsFromTargetReader)
      Constructs a bounded reader
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes the target
      void mark​(int readAheadLimit)
      marks the target stream
      int read()
      Reads a single character
      int read​(char[] cbuf, int off, int len)
      Reads into an array
      void reset()
      Resets the target to the latest mark,
      • Methods inherited from class java.io.Reader

        markSupported, nullReader, read, read, ready, skip, transferTo
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BoundedReader

        public BoundedReader​(java.io.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 Detail

      • close

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

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

        public void mark​(int readAheadLimit)
                  throws java.io.IOException
        marks the target stream
        Overrides:
        mark in class java.io.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:
        java.io.IOException - If an I/O error occurs while calling the underlying reader's mark method
        See Also:
        Reader.mark(int)
      • read

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

        public int read​(char[] cbuf,
                        int off,
                        int len)
                 throws java.io.IOException
        Reads into an array
        Specified by:
        read in class java.io.Reader
        Parameters:
        cbuf - The buffer to fill
        off - The offset
        len - The number of chars to read
        Returns:
        the number of chars read
        Throws:
        java.io.IOException - If an I/O error occurs while calling the underlying reader's read method
        See Also:
        Reader.read(char[], int, int)