Package org.apache.commons.io.output
Class ProxyOutputStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
org.apache.commons.io.output.ProxyOutputStream
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
- Direct Known Subclasses:
CloseShieldOutputStream
,CountingOutputStream
,TaggedOutputStream
,TeeOutputStream
A Proxy stream which acts as expected, that is it passes the method
calls on to the proxied stream and doesn't change which methods are
being called. It is an alternative base class to FilterOutputStream
to increase reusability.
See the protected methods for ways in which a subclass can easily decorate a stream with custom pre-, post- or error processing functionality.
-
Field Summary
Fields inherited from class java.io.FilterOutputStream
out
-
Constructor Summary
ConstructorDescriptionProxyOutputStream
(OutputStream delegate) Constructs a new ProxyOutputStream. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
afterWrite
(int n) Invoked by the write methods after the proxied call has returned successfully.protected void
beforeWrite
(int n) Invoked by the write methods before the call is proxied.void
close()
Invokes the delegate'sclose()
method.void
flush()
Invokes the delegate'sflush()
method.protected void
Handle any IOExceptions thrown.void
write
(byte[] bts) Invokes the delegate'swrite(byte[])
method.void
write
(byte[] bts, int st, int end) Invokes the delegate'swrite(byte[])
method.void
write
(int idx) Invokes the delegate'swrite(int)
method.
-
Constructor Details
-
ProxyOutputStream
Constructs a new ProxyOutputStream.- Parameters:
delegate
- the OutputStream to delegate to
-
-
Method Details
-
afterWrite
Invoked by the write methods after the proxied call has returned successfully. The number of bytes written (1 for thewrite(int)
method, buffer length forwrite(byte[])
, etc.) is given as an argument.Subclasses can override this method to add common post-processing functionality without having to override all the write methods. The default implementation does nothing.
- Parameters:
n
- number of bytes written- Throws:
IOException
- if the post-processing fails- Since:
- 2.0
-
beforeWrite
Invoked by the write methods before the call is proxied. The number of bytes to be written (1 for thewrite(int)
method, buffer length forwrite(byte[])
, etc.) is given as an argument.Subclasses can override this method to add common pre-processing functionality without having to override all the write methods. The default implementation does nothing.
- Parameters:
n
- number of bytes to be written- Throws:
IOException
- if the pre-processing fails- Since:
- 2.0
-
close
Invokes the delegate'sclose()
method.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classFilterOutputStream
- Throws:
IOException
- if an I/O error occurs.
-
flush
Invokes the delegate'sflush()
method.- Specified by:
flush
in interfaceFlushable
- Overrides:
flush
in classFilterOutputStream
- Throws:
IOException
- if an I/O error occurs.
-
handleIOException
Handle any IOExceptions thrown.This method provides a point to implement custom exception handling. The default behavior is to re-throw the exception.
- Parameters:
e
- The IOException thrown- Throws:
IOException
- if an I/O error occurs.- Since:
- 2.0
-
write
Invokes the delegate'swrite(byte[])
method.- Overrides:
write
in classFilterOutputStream
- Parameters:
bts
- the bytes to write- Throws:
IOException
- if an I/O error occurs.
-
write
Invokes the delegate'swrite(byte[])
method.- Overrides:
write
in classFilterOutputStream
- Parameters:
bts
- the bytes to writest
- The start offsetend
- The number of bytes to write- Throws:
IOException
- if an I/O error occurs.
-
write
Invokes the delegate'swrite(int)
method.- Overrides:
write
in classFilterOutputStream
- Parameters:
idx
- the byte to write- Throws:
IOException
- if an I/O error occurs.
-