import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Main {
/**
*
* @param in The InputStream to read the bytes from.
* @return A byte array containing the bytes that were read.
* @throws IOException If I/O error occurred.
*/
public static final byte[] readFully(InputStream in)
throws IOException
{
ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
transfer(in, out);
out.close();
return out.toByteArray();
}
/**
* Transfers all bytes that can be read from <tt>in</tt> to <tt>out</tt>.
*
* @param in The InputStream to read data from.
* @param out The OutputStream to write data to.
* @return The total number of bytes transfered.
*/
public static final long transfer(InputStream in, OutputStream out)
throws IOException
{
long totalBytes = 0;
int bytesInBuf = 0;
byte[] buf = new byte[4096];
while ((bytesInBuf = in.read(buf)) != -1) {
out.write(buf, 0, bytesInBuf);
totalBytes += bytesInBuf;
}
return totalBytes;
}
}