You need to copy a stream, byte[], Reader, or Writer. For example,
you need to copy the content from an InputStream or Reader to a Writer, or you need to copy a String to an OutputStream.
Use CopyUtils from Commons IO
to copy the contents of an InputStream, Reader, byte[], or String to an OutputStream or a Writer. The following code demonstrates the
use of CopyUtils to copy between an
InputStream and a Writer:
import org.apache.commons.io.CopyUtils;
try {
Writer writer = new FileWriter( "test.dat" );
InputStream inputStream =
getClass( ).getResourceAsStream("./test.resource");
CopyUtils.copy( inputStream, writer );
writer.close( );
inputStream.close( );
} catch (IOException e) {
System.out.println( "Error copying data" );
}The previous example reads test.resource using an InputStream, which is copied to a FileWriter using CopyUtils.copy( ).
If you need to copy information from a Reader or InputStream to a String, use IOUtils.toString( ). The following example
opens an InputStream from a URL and copies
the contents to a String:
import org.apache.commons.io.IOUtils;
URL url = new URL( "http://www.slashdot.org" );
try {
InputStream inStream = url.openStream( );
String contents = IOUtils.toString( inStream );
System.out.println( "Slashdot: " + contents );
} catch ( IOException ioe ) {
// handle this exception
}Because CopyUtils uses a 4 KB
buffer to copy between the source and the destination, you do
not need to supply buffered streams or readers to
the copy( ) method. When using
CopyUtils.copy( ), make sure to
flush( ) and close( ) any streams, Readers, or Writers passed to copy( ).
