aliocrlib/src/main/java/com/lib/aliocr/utils/io/IOUtils.java
/**
     * Copy 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/>
     * 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.
     *
     * @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
     */
Copy 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.


Copy 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 .
@SuppressWarnings("UnusedReturnValue")
    public static int copy(InputStream input, OutputStream output) throws IOException {
        long count = copyLarge(input, output);
        if (count > Integer.MAX_VALUE) {
            return -1;
        }
        return (int) count;
    }
@ SuppressWarnings ( "UnusedReturnValue" ) public static int copy ( InputStream input , OutputStream output ) throws IOException { long count = copyLarge ( input , output ) ; if ( count > Integer . MAX_VALUE ) { return - 1 ; } return ( int ) count ; }
Copy bytes from an <code>InputStream</code> to an
 <code>OutputStream</code>.
Copy bytes from an <code > InputStream< / code > to an <code > OutputStream< / code > .