public static int read(Reader input, char[] buffer) throws IOException {
        return read(input, buffer, 0, buffer.length);
    }
Read characters from an input character stream.
This implementation guarantees that it will read as many characters
as possible before giving up; this may not always be the case for
subclasses of {@link Reader}.

@param input  where to read input from
@param buffer destination
@return actual length read; may be less than requested if EOF was reached
@throws IOException if a read error occurs
@since 2.2
pay-java-common/src/main/java/com/egzosn/pay/common/util/IOUtils.java