public static int copy(final InputStream input, final OutputStream output, final int count) throws IOException {
		if (count == ALL) {
			return copy(input, output);
		}

		int numToRead = count;
		byte[] buffer = new byte[numToRead];

		int totalRead = ZERO;
		int read;

		while (numToRead > ZERO) {
			read = input.read(buffer, ZERO, bufferSize(numToRead));
			if (read == NEGATIVE_ONE) {
				break;
			}
			output.write(buffer, ZERO, read);

			numToRead = numToRead - read;
			totalRead = totalRead + read;
		}

		output.flush();
		return totalRead;
	}
public static int copy(final InputStream input, final OutputStream output, final int count) throws IOException {
		if (count == ALL) {
			return copy(input, output);
		}

		int numToRead = count;
		byte[] buffer = new byte[numToRead];

		int totalRead = ZERO;
		int read;

		while (numToRead > ZERO) {
			read = input.read(buffer, ZERO, bufferSize(numToRead));
			if (read == NEGATIVE_ONE) {
				break;
			}
			output.write(buffer, ZERO, read);

			numToRead = numToRead - read;
			totalRead = totalRead + read;
		}

		output.flush();
		return totalRead;
	}
public static int copy ( final InputStream input , final OutputStream output , final int count ) throws IOException { if ( count == ALL ) { return copy ( input , output ) ; } int numToRead = count ; byte [ ] buffer = new byte [ numToRead ] ; int totalRead = ZERO ; int read ; while ( numToRead > ZERO ) { read = input . read ( buffer , ZERO , bufferSize ( numToRead ) ) ; if ( read == NEGATIVE_ONE ) { break ; } output . write ( buffer , ZERO , read ) ; numToRead = numToRead - read ; totalRead = totalRead + read ; } output . flush ( ) ; return totalRead ; }
Copies specified number of bytes from {@link InputStream} to {@link OutputStream} using buffer.
{@link InputStream} and {@link OutputStream} don't have to be wrapped to buffered, since copying is already optimized.

@param input  {@link InputStream} to read.
@param output {@link OutputStream} to write to.
@param count  The number of bytes to read.
@return The total number of bytes read.
@throws IOException if there is an error reading or writing.
Copies specified number of bytes from { @link InputStream } to { @link OutputStream } using buffer . { @link InputStream } and { @link OutputStream } don t have to be wrapped to buffered since copying is already optimized .