Class LimitedInputStream

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

    public class LimitedInputStream
    extends java.io.InputStream
    Wraps around an InputStream and limits the amount of bytes that can be read from it. Use it if you operate on an InputStream that consists of chunks of a know size, each to be processed using a buffered input stream (e.g. GZIPInputStream). Normal buffered input streams would read beyond the limit. The LimitedInputStream never closes the inside InputStream(close does nothing).
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int bytesLeft  
      private java.io.InputStream in  
    • Constructor Summary

      Constructors 
      Constructor Description
      LimitedInputStream​(java.io.InputStream in, int maxBytes)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int available()  
      void close()  
      static java.util.zip.GZIPInputStream createGZIPInputStream​(java.io.InputStream in, int maxBytes)  
      int getBytesLeft()  
      int read()  
      int read​(byte[] buffer)  
      int read​(byte[] buffer, int offset, int count)  
      long skip​(long byteCount)  
      • Methods inherited from class java.io.InputStream

        mark, markSupported, nullInputStream, readAllBytes, readNBytes, readNBytes, reset, transferTo
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • bytesLeft

        private int bytesLeft
      • in

        private final java.io.InputStream in
    • Constructor Detail

      • LimitedInputStream

        public LimitedInputStream​(java.io.InputStream in,
                                  int maxBytes)
    • Method Detail

      • createGZIPInputStream

        public static java.util.zip.GZIPInputStream createGZIPInputStream​(java.io.InputStream in,
                                                                          int maxBytes)
                                                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • available

        public int available()
                      throws java.io.IOException
        Overrides:
        available in class java.io.InputStream
        Throws:
        java.io.IOException
      • read

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

        public int read​(byte[] buffer,
                        int offset,
                        int count)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] buffer)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • skip

        public long skip​(long byteCount)
                  throws java.io.IOException
        Overrides:
        skip in class java.io.InputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.InputStream
        Throws:
        java.io.IOException
      • getBytesLeft

        public int getBytesLeft()