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:
java.io.Closeable,java.io.Flushable,java.lang.AutoCloseable
- Direct Known Subclasses:
CloseShieldOutputStream,CountingOutputStream,TaggedOutputStream,TeeOutputStream
public class ProxyOutputStream extends java.io.FilterOutputStream
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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classProxyOutputStream.BuilderBuilds instances ofProxyOutputStream.
-
Constructor Summary
Constructors Constructor Description ProxyOutputStream(java.io.OutputStream delegate)Constructs a new ProxyOutputStream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidafterWrite(int n)Invoked by the write methods after the proxied call has returned successfully.protected voidbeforeWrite(int n)Invoked by the write methods before the call is proxied.voidclose()Invokes the delegate'sclose()method.voidflush()Invokes the delegate'sflush()method.protected voidhandleIOException(java.io.IOException e)Handle any IOExceptions thrown.ProxyOutputStreamsetReference(java.io.OutputStream out)Sets the underlying output stream.voidwrite(byte[] b)Invokes the delegate'swrite(byte[])method.voidwrite(byte[] b, int off, int len)Invokes the delegate'swrite(byte[])method.voidwrite(int b)Invokes the delegate'swrite(int)method.voidwriteRepeat(byte[] b, int off, int len, long repeat)Invokes the delegate'swrite(byte[])method for therepeatcount.voidwriteRepeat(byte[] b, long repeat)Invokes the delegate'swrite(byte[])method for therepeatcount.voidwriteRepeat(int b, long repeat)Invokes the delegate'swrite(int)method.
-
-
-
Constructor Detail
-
ProxyOutputStream
public ProxyOutputStream(java.io.OutputStream delegate)
Constructs a new ProxyOutputStream.- Parameters:
delegate- the OutputStream to delegate to.
-
-
Method Detail
-
afterWrite
protected void afterWrite(int n) throws java.io.IOException
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:
java.io.IOException- if the post-processing fails.- Since:
- 2.0
-
beforeWrite
protected void beforeWrite(int n) throws java.io.IOException
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:
java.io.IOException- if the pre-processing fails.- Since:
- 2.0
-
close
public void close() throws java.io.IOException
Invokes the delegate'sclose()method.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.FilterOutputStream- Throws:
java.io.IOException- if an I/O error occurs.
-
flush
public void flush() throws java.io.IOException
Invokes the delegate'sflush()method.- Specified by:
flushin interfacejava.io.Flushable- Overrides:
flushin classjava.io.FilterOutputStream- Throws:
java.io.IOException- if an I/O error occurs.
-
handleIOException
protected void handleIOException(java.io.IOException e) throws java.io.IOException
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:
java.io.IOException- if an I/O error occurs.- Since:
- 2.0
-
setReference
public ProxyOutputStream setReference(java.io.OutputStream out)
Sets the underlying output stream.- Parameters:
out- the underlying output stream.- Returns:
thisinstance.- Since:
- 2.19.0
-
write
public void write(byte[] b) throws java.io.IOException
Invokes the delegate'swrite(byte[])method.- Overrides:
writein classjava.io.FilterOutputStream- Parameters:
b- the bytes to write.- Throws:
java.io.IOException- if an I/O error occurs.
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException
Invokes the delegate'swrite(byte[])method.- Overrides:
writein classjava.io.FilterOutputStream- Parameters:
b- the bytes to write.off- The start offset.len- The number of bytes to write.- Throws:
java.io.IOException- if an I/O error occurs.
-
write
public void write(int b) throws java.io.IOException
Invokes the delegate'swrite(int)method.- Overrides:
writein classjava.io.FilterOutputStream- Parameters:
b- the byte to write.- Throws:
java.io.IOException- if an I/O error occurs.
-
writeRepeat
public void writeRepeat(byte[] b, int off, int len, long repeat) throws java.io.IOException
Invokes the delegate'swrite(byte[])method for therepeatcount.- Parameters:
b- the bytes to write.off- The start offset.len- The number of bytes to write.repeat- How many times to write the bytes inb.- Throws:
java.io.IOException- if an I/O error occurs.- Since:
- 2.21.0
-
writeRepeat
public void writeRepeat(byte[] b, long repeat) throws java.io.IOException
Invokes the delegate'swrite(byte[])method for therepeatcount.- Parameters:
b- the bytes to write.repeat- How many times to write the bytes inb.- Throws:
java.io.IOException- if an I/O error occurs.- Since:
- 2.21.0
-
writeRepeat
public void writeRepeat(int b, long repeat) throws java.io.IOException
Invokes the delegate'swrite(int)method.- Parameters:
b- the byte to write.repeat- How many times to write the byte inb.- Throws:
java.io.IOException- if an I/O error occurs.- Since:
- 2.21.0
-
-