| java.lang.Object | ||
| ↳ | java.io.InputStream | |
| ↳ | java.io.FilterInputStream | |
|  Known Direct Subclasses | 
|  Known Indirect Subclasses | 
       Wraps an existing
       
        
         InputStream
        
       
       and performs some transformation on
 the input data while it is being read. Transformations can be anything from a
 simple byte-wise filtering input data to an on-the-fly compression or
 decompression of the underlying stream. Input streams that wrap another input
 stream and provide some additional functionality on top of it usually inherit
 from this class.
      
| Fields | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  | in | The source input stream that is filtered. | |||||||||
| Protected Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  | 
          Constructs a new
           
           FilterInputStream
          with the specified input
 stream as source. | ||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  | 
          Returns an estimated number of bytes that can be read or skipped without blocking for more
 input.
          | ||||||||||
|  | 
          Closes this stream.
          | ||||||||||
|  | 
          Sets a mark position in this stream.
          | ||||||||||
|  | 
          Indicates whether this stream supports
           
           mark()
          and
           reset()
          . | ||||||||||
|  | 
          Reads a single byte from the filtered stream and returns it as an integer
 in the range from 0 to 255.
          | ||||||||||
|  | 
          Reads up to
           
           byteCount
          bytes from this stream and stores them in
 the byte array
           buffer
          starting at
           byteOffset
          . | ||||||||||
|  | 
          Resets this stream to the last marked location.
          | ||||||||||
|  | 
          Skips
           
           byteCount
          bytes in this stream. | ||||||||||
| [Expand] 
          Inherited Methods
          | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  From class
         
          java.io.InputStream | |||||||||||
|  From class
         
          java.lang.Object | |||||||||||
|  From interface
         
          java.io.Closeable | |||||||||||
|  From interface
         
          java.lang.AutoCloseable | |||||||||||
         Constructs a new
         
          FilterInputStream
         
         with the specified input
 stream as source.
        
         
          Warning:
         
         passing a null source creates an invalid
         
          FilterInputStream
         
         , that fails on every method that is not
 overridden. Subclasses should check for null in their constructors.
        
| in | the input stream to filter reads on. | 
|---|
Returns an estimated number of bytes that can be read or skipped without blocking for more input.
Note that this method provides such a weak guarantee that it is not very useful in practice.
Firstly, the guarantee is "without blocking for more input" rather than "without blocking": a read may still block waiting for I/O to complete — the guarantee is merely that it won't have to wait indefinitely for data to be written. The result of this method should not be used as a license to do I/O on a thread that shouldn't be blocked.
Secondly, the result is a conservative estimate and may be significantly smaller than the actual number of bytes available. In particular, an implementation that always returns 0 would be correct. In general, callers should only use this method if they'd be satisfied with treating the result as a boolean yes or no answer to the question "is there definitely data ready?".
Thirdly, the fact that a given number of bytes is "available" does not guarantee that a read or skip will actually read or skip that many bytes: they may read or skip fewer.
         It is particularly important to realize that you
         
          must not
         
         use this method to
 size a container and assume that you can read the entirety of the stream without needing
 to resize the container. Such callers should probably write everything they read to a
         
          
           ByteArrayOutputStream
          
         
         and convert that to a byte array. Alternatively, if you're
 reading from a file,
         
          
           length()
          
         
         returns the current length of the file (though
 assuming the file's length can't change may be incorrect, reading a file is inherently
 racy).
        
         The default implementation of this method in
         
          InputStream
         
         always returns 0.
 Subclasses should override this method if they are able to indicate the number of bytes
 available.
        
| IOException | 
|---|
Closes this stream. This implementation closes the filtered stream.
| IOException | if an error occurs while closing this stream. | 
|---|
         Sets a mark position in this stream. The parameter
         
          readlimit
         
         indicates how many bytes can be read before the mark is invalidated.
 Sending
         
          reset()
         
         will reposition this stream back to the marked
 position, provided that
         
          readlimit
         
         has not been surpassed.
        
This implementation sets a mark in the filtered stream.
| readlimit | the number of bytes that can be read from this stream before the mark is invalidated. | 
|---|
         Indicates whether this stream supports
         
          mark()
         
         and
         
          reset()
         
         .
 This implementation returns whether or not the filtered stream supports
 marking.
        
           true
          
          if
          
           mark()
          
          and
          
           reset()
          
          are supported,
          
           false
          
          otherwise.
         Reads a single byte from the filtered stream and returns it as an integer in the range from 0 to 255. Returns -1 if the end of this stream has been reached.
| IOException | if the stream is closed or another IOException occurs. | 
|---|
         Reads up to
         
          byteCount
         
         bytes from this stream and stores them in
 the byte array
         
          buffer
         
         starting at
         
          byteOffset
         
         .
 Returns the number of bytes actually read or -1 if the end of the stream
 has been reached.
        
| IOException | 
|---|
Resets this stream to the last marked location. This implementation resets the target stream.
| IOException | if this stream is already closed, no mark has been set or the
             mark is no longer valid because more than 
            readlimit
           bytes have been read since setting the mark. | 
|---|
         Skips
         
          byteCount
         
         bytes in this stream. Subsequent
 calls to
         
          read
         
         will not return these bytes unless
         
          reset
         
         is
 used. This implementation skips
         
          byteCount
         
         bytes in the
 filtered stream.
        
| IOException | if this stream is closed or another IOException occurs. | 
|---|