Added null checks also to Readable/Appendable copy methods Patrick
> Am 27.11.2014 um 13:26 schrieb Pavel Rappo <pavel.ra...@oracle.com>: > > At the bare minimum I would use runtime null/range checks and give a little > bit more freedom for those who want to control buffer (or probably reuse > already existing one): http://cr.openjdk.java.net/~prappo/ioutil/webrev.01/ > > I would also add some clarifications in the javadoc. > > -Pavel > diff -r 194458fe7339 src/java.base/share/classes/java/io/IOUtil.java --- a/src/java.base/share/classes/java/io/IOUtil.java Thu Nov 27 13:50:36 2014 +0100 +++ b/src/java.base/share/classes/java/io/IOUtil.java Thu Nov 27 14:00:07 2014 +0100 @@ -71,7 +71,6 @@ */ public static long copy(InputStream source, OutputStream target, byte[] buffer) throws IOException { - Objects.requireNonNull(source, "source"); Objects.requireNonNull(target, "target"); Objects.requireNonNull(buffer, "buffer"); @@ -100,15 +99,15 @@ * @throws IOException if an I/O error occurs when reading or writing */ public static long copy(Readable source, Appendable target) throws IOException { - long totalRead = 0L; + Objects.requireNonNull(source, "source"); + Objects.requireNonNull(target, "target"); + long copied = 0L; CharBuffer buffer = CharBuffer.allocate(BUFFER_SIZE); - int read; - while ((read = source.read(buffer)) > -1) { + for (int read; (read = source.read(buffer)) > -1; copied += read) { buffer.flip(); target.append(buffer, 0, read); - totalRead += read; } - return totalRead; + return copied; } }