Mega Code Archive

 
Categories / Java Tutorial / File
 

Reads bytes available from one InputStream and returns these bytes in a byte array

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;   } }