java.io.Closeable
, java.lang.AutoCloseable
AutoCloseInputStream
, BOMInputStream
, CloseShieldInputStream
, CountingInputStream
, SwappedDataInputStream
, TaggedInputStream
, TeeInputStream
public abstract class ProxyInputStream
extends java.io.FilterInputStream
It is an alternative base class to FilterInputStream to increase reusability, because FilterInputStream changes the methods being called, such as read(byte[]) to read(byte[], int, int).
See the protected methods for ways in which a subclass can easily decorate a stream with custom pre-, post- or error processing functionality.
Constructor | Description |
---|---|
ProxyInputStream(java.io.InputStream proxy) |
Constructs a new ProxyInputStream.
|
Modifier and Type | Method | Description |
---|---|---|
protected void |
afterRead(int n) |
Invoked by the read methods after the proxied call has returned
successfully.
|
int |
available() |
Invokes the delegate's
available() method. |
protected void |
beforeRead(int n) |
Invoked by the read methods before the call is proxied.
|
void |
close() |
Invokes the delegate's
close() method. |
protected void |
handleIOException(java.io.IOException e) |
Handle any IOExceptions thrown.
|
void |
mark(int readlimit) |
Invokes the delegate's
mark(int) method. |
boolean |
markSupported() |
Invokes the delegate's
markSupported() method. |
int |
read() |
Invokes the delegate's
read() method. |
int |
read(byte[] bts) |
Invokes the delegate's
read(byte[]) method. |
int |
read(byte[] bts,
int off,
int len) |
Invokes the delegate's
read(byte[], int, int) method. |
void |
reset() |
Invokes the delegate's
reset() method. |
long |
skip(long ln) |
Invokes the delegate's
skip(long) method. |
public ProxyInputStream(java.io.InputStream proxy)
proxy
- the InputStream to delegate topublic int read() throws java.io.IOException
read()
method.read
in class java.io.FilterInputStream
java.io.IOException
- if an I/O error occurspublic int read(byte[] bts) throws java.io.IOException
read(byte[])
method.read
in class java.io.FilterInputStream
bts
- the buffer to read the bytes intojava.io.IOException
- if an I/O error occurspublic int read(byte[] bts, int off, int len) throws java.io.IOException
read(byte[], int, int)
method.read
in class java.io.FilterInputStream
bts
- the buffer to read the bytes intooff
- The start offsetlen
- The number of bytes to readjava.io.IOException
- if an I/O error occurspublic long skip(long ln) throws java.io.IOException
skip(long)
method.skip
in class java.io.FilterInputStream
ln
- the number of bytes to skipjava.io.IOException
- if an I/O error occurspublic int available() throws java.io.IOException
available()
method.available
in class java.io.FilterInputStream
java.io.IOException
- if an I/O error occurspublic void close() throws java.io.IOException
close()
method.close
in interface java.lang.AutoCloseable
close
in interface java.io.Closeable
close
in class java.io.FilterInputStream
java.io.IOException
- if an I/O error occurspublic void mark(int readlimit)
mark(int)
method.mark
in class java.io.FilterInputStream
readlimit
- read ahead limitpublic void reset() throws java.io.IOException
reset()
method.reset
in class java.io.FilterInputStream
java.io.IOException
- if an I/O error occurspublic boolean markSupported()
markSupported()
method.markSupported
in class java.io.FilterInputStream
protected void beforeRead(int n) throws java.io.IOException
read()
method, buffer length for read(byte[])
, etc.) is given as
an argument.
Subclasses can override this method to add common pre-processing functionality without having to override all the read methods. The default implementation does nothing.
Note this method is not called from skip(long)
or
reset()
. You need to explicitly override those methods if
you want to add pre-processing steps also to them.
n
- number of bytes that the caller asked to be readjava.io.IOException
- if the pre-processing failsprotected void afterRead(int n) throws java.io.IOException
Subclasses can override this method to add common post-processing functionality without having to override all the read methods. The default implementation does nothing.
Note this method is not called from skip(long)
or
reset()
. You need to explicitly override those methods if
you want to add post-processing steps also to them.
n
- number of bytes read, or -1 if the end of stream was reachedjava.io.IOException
- if the post-processing failsprotected void handleIOException(java.io.IOException e) throws java.io.IOException
This method provides a point to implement custom exception handling. The default behaviour is to re-throw the exception.
e
- The IOException thrownjava.io.IOException
- if an I/O error occursCopyright (c) 2002-2017 Apache Software Foundation