Class BoundedInputStream

java.lang.Object
java.io.InputStream
org.apache.tika.io.BoundedInputStream
All Implemented Interfaces:
Closeable, AutoCloseable

public class BoundedInputStream extends InputStream
Very slight modification of Commons' BoundedInputStream so that we can figure out if this hit the bound or not.

This relies on IOUtils' skip and read to try to fully read/skip inputstream.

  • Constructor Details

    • BoundedInputStream

      public BoundedInputStream(long max, InputStream in)
  • Method Details

    • read

      public int read() throws IOException
      Specified by:
      read in class InputStream
      Throws:
      IOException
    • read

      public int read(byte[] b) throws IOException
      Invokes the delegate's read(byte[]) method.
      Overrides:
      read in class InputStream
      Parameters:
      b - the buffer to read the bytes into
      Returns:
      the number of bytes read or -1 if the end of stream or the limit has been reached.
      Throws:
      IOException - if an I/O error occurs
    • read

      public int read(byte[] b, int off, int len) throws IOException
      Invokes the delegate's read(byte[], int, int) method.

      This does not have the same guarantees as IOUtil's readFully()...be careful.

      Overrides:
      read in class InputStream
      Parameters:
      b - the buffer to read the bytes into
      off - The start offset
      len - The number of bytes to read
      Returns:
      the number of bytes read or -1 if the end of stream or the limit has been reached.
      Throws:
      IOException - if an I/O error occurs
    • skip

      public long skip(long n) throws IOException
      Invokes the delegate's skip(long) method. As with InputStream generally, this does not guarantee reading n bytes. Use IOUtils' skipFully for that functionality.
      Overrides:
      skip in class InputStream
      Parameters:
      n - the number of bytes to skip
      Returns:
      the actual number of bytes skipped
      Throws:
      IOException - if an I/O error occurs
    • reset

      public void reset() throws IOException
      Overrides:
      reset in class InputStream
      Throws:
      IOException
    • mark

      public void mark(int readLimit)
      Overrides:
      mark in class InputStream
    • hasHitBound

      public boolean hasHitBound()