src/main/java/com/bc/diskcache/SimpleDiskLruCache.java
/**
     * Copies bytes from an <code>InputStream</code> to an
     * <code>OutputStream</code>.
     * <p>
     * This method buffers the input internally, so there is no need to use a
     * <code>BufferedInputStream</code>.
     * </p>
     * <p>
     * Large streams (over 2GB) will return a bytes copied value of
     * <code>-1</code> after the copy has completed since the correct
     * number of bytes cannot be returned as an int. For large streams
     * use the <code>copyLarge(InputStream, OutputStream)</code> method.
     * </p>
     * @param input the <code>InputStream</code> to read from
     * @param output the <code>OutputStream</code> to write to
     * @return the number of bytes copied, or -1 if &gt; Integer.MAX_VALUE
     * @throws NullPointerException if the input or output is null
     * @throws IOException          if an I/O error occurs
     * @since 1.1
     */
Copies bytes from an InputStream to an
OutputStream.

This method buffers the input internally, so there is no need to use a
BufferedInputStream.


Large streams (over 2GB) will return a bytes copied value of
-1 after the copy has completed since the correct
number of bytes cannot be returned as an int. For large streams
use the copyLarge(InputStream, OutputStream) method.
Copies bytes from an InputStream to an OutputStream . This method buffers the input internally so there is no need to use a BufferedInputStream . Large streams ( over 2GB ) will return a bytes copied value of - 1 after the copy has completed since the correct number of bytes cannot be returned as an int . For large streams use the copyLarge ( InputStream OutputStream ) method .
private int copy(final InputStream input, final OutputStream output) throws IOException {
        final long count = copyLarge(input, output, new byte[8192]);
        if (count > Integer.MAX_VALUE) {
            return -1;
        }
        return (int) count;
    }
private int copy ( final InputStream input , final OutputStream output ) throws IOException { final long count = copyLarge ( input , output , new byte [ 8192 ] ) ; if ( count > Integer . MAX_VALUE ) { return - 1 ; } return ( int ) count ; }
Copies bytes from an <code>InputStream</code> to an
 <code>OutputStream</code>.
Copies bytes from an <code > InputStream< / code > to an <code > OutputStream< / code > .