public abstract class ProxyInputStream
extends java.io.FilterInputStream
FilterInputStream, by passing all method calls on to the proxied stream, not changing which methods are called.
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).
In addition, this class allows you to:
beforeRead(int)afterRead(int)handleIOException(IOException)unwrap() itselfThis class does not add any state (no additional instance variables).
| Constructor and Description |
|---|
ProxyInputStream(java.io.InputStream proxy)
Constructs a new ProxyInputStream.
|
| Modifier and Type | Method and 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)
Handles any IOExceptions thrown; by default, throws the given exception.
|
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[] b)
Invokes the delegate's
read(byte[]) method. |
int |
read(byte[] b,
int off,
int len)
Invokes the delegate's
read(byte[], int, int) method. |
void |
reset()
Invokes the delegate's
reset() method. |
long |
skip(long n)
Invokes the delegate's
skip(long) method. |
java.io.InputStream |
unwrap()
Unwraps this instance by returning the underlying InputStream.
|
public ProxyInputStream(java.io.InputStream proxy)
proxy - the InputStream to delegate toprotected void afterRead(int n)
throws java.io.IOException
read methods after the proxied call has returned
successfully. The number of bytes returned to the caller (or -1 if
the end of stream was reached) is given as an argument.
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 reached.java.io.IOException - if the post-processing fails in a subclass.public int available()
throws java.io.IOException
available() method.available in class java.io.FilterInputStreamjava.io.IOException - if an I/O error occurs.protected void beforeRead(int n)
throws java.io.IOException
read methods before the call is proxied. The number
of bytes that the caller wanted to read (1 for the 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 read.java.io.IOException - if the pre-processing fails in a subclass.public void close()
throws java.io.IOException
close() method.close in interface java.io.Closeableclose in interface java.lang.AutoCloseableclose in class java.io.FilterInputStreamjava.io.IOException - if an I/O error occurs.protected void handleIOException(java.io.IOException e)
throws java.io.IOException
This method provides a point to implement custom exception handling. The default behavior is to re-throw the exception.
e - The IOException thrownjava.io.IOException - if an I/O error occurs.public void mark(int readLimit)
mark(int) method.mark in class java.io.FilterInputStreamreadLimit - read ahead limitpublic boolean markSupported()
markSupported() method.markSupported in class java.io.FilterInputStreampublic int read()
throws java.io.IOException
read() method.read in class java.io.FilterInputStreamjava.io.IOException - if an I/O error occurs.public int read(byte[] b)
throws java.io.IOException
read(byte[]) method.read in class java.io.FilterInputStreamb - the buffer to read the bytes intojava.io.IOException - if an I/O error occurs.public int read(byte[] b,
int off,
int len)
throws java.io.IOException
read(byte[], int, int) method.read in class java.io.FilterInputStreamb - the buffer to read the bytes intooff - The start offsetlen - The number of bytes to readjava.io.IOException - if an I/O error occurs.public void reset()
throws java.io.IOException
reset() method.reset in class java.io.FilterInputStreamjava.io.IOException - if an I/O error occurs.public long skip(long n)
throws java.io.IOException
skip(long) method.skip in class java.io.FilterInputStreamn - the number of bytes to skipjava.io.IOException - if an I/O error occurs.public java.io.InputStream unwrap()
Use with caution; useful to query the underlying InputStream.