public class StreamPumper
extends java.lang.Object
implements java.lang.Runnable
Constructor and Description |
---|
StreamPumper(java.io.InputStream is,
java.io.OutputStream os)
Create a new StreamPumper.
|
StreamPumper(java.io.InputStream is,
java.io.OutputStream os,
boolean closeWhenExhausted)
Create a new StreamPumper.
|
StreamPumper(java.io.InputStream is,
java.io.OutputStream os,
boolean closeWhenExhausted,
boolean useAvailable)
Create a new StreamPumper.
|
Modifier and Type | Method and Description |
---|---|
int |
getBufferSize()
Get the size in bytes of the read buffer.
|
java.lang.Exception |
getException()
Get the exception encountered, if any.
|
boolean |
isFinished()
Tells whether the end of the stream has been reached.
|
void |
run()
Copies data from the input stream to the output stream.
|
void |
setBufferSize(int bufferSize)
Set the size in bytes of the read buffer.
|
void |
waitFor()
This method blocks until the StreamPumper finishes.
|
public StreamPumper(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted)
is
- input stream to read data fromos
- output stream to write data to.closeWhenExhausted
- if true, the output stream will be closed when
the input is exhausted.public StreamPumper(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted, boolean useAvailable)
Note: If you set useAvailable to true, you must
explicitly invoke stop
or interrupt the
corresponding Thread when you are done or the run method will
never finish on some JVMs (namely those where available returns
0 on a closed stream). Setting it to true may also impact
performance negatively. This flag should only be set to true
if you intend to stop the pumper before the input stream gets
closed.
is
- input stream to read data fromos
- output stream to write data to.closeWhenExhausted
- if true, the output stream will be closed when
the input is exhausted.useAvailable
- whether the pumper should use available
to determine
whether input is ready, thus trying to emulate
non-blocking behavior.public StreamPumper(java.io.InputStream is, java.io.OutputStream os)
is
- input stream to read data fromos
- output stream to write data to.public void run()
run
in interface java.lang.Runnable
public boolean isFinished()
public void waitFor() throws java.lang.InterruptedException
java.lang.InterruptedException
- if interrupted.isFinished()
public void setBufferSize(int bufferSize)
bufferSize
- the buffer size to use.java.lang.IllegalStateException
- if the StreamPumper is already running.public int getBufferSize()
public java.lang.Exception getException()