diff --git a/src/java.base/share/classes/java/io/InputStream.java b/src/java.base/share/classes/java/io/InputStream.java index 0f4b6f5baee..b4d6255034f 100644 --- a/src/java.base/share/classes/java/io/InputStream.java +++ b/src/java.base/share/classes/java/io/InputStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -164,11 +164,9 @@ public abstract class InputStream implements Closeable { * @see java.io.InputStream#read() */ public int read(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if (off < 0 || len < 0 || len > b.length - off) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { + Objects.requireNonNull(b); + Objects.checkFromIndexSize(off, len, b.length); + if (len == 0) { return 0; } @@ -302,8 +300,8 @@ public abstract class InputStream implements Closeable { */ public int readNBytes(byte[] b, int off, int len) throws IOException { Objects.requireNonNull(b); - if (off < 0 || len < 0 || len > b.length - off) - throw new IndexOutOfBoundsException(); + Objects.checkFromIndexSize(off, len, b.length); + int n = 0; while (n < len) { int count = read(b, off + n, len - n); diff --git a/src/java.base/share/classes/java/io/OutputStream.java b/src/java.base/share/classes/java/io/OutputStream.java index 03a058b6e87..c6cb74d9452 100644 --- a/src/java.base/share/classes/java/io/OutputStream.java +++ b/src/java.base/share/classes/java/io/OutputStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package java.io; +import java.util.Objects; + /** * This abstract class is the superclass of all classes representing * an output stream of bytes. An output stream accepts output bytes @@ -104,14 +106,9 @@ public abstract class OutputStream implements Closeable, Flushable { * stream is closed. */ public void write(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if ((off < 0) || (off > b.length) || (len < 0) || - ((off + len) > b.length) || ((off + len) < 0)) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { - return; - } + Objects.requireNonNull(b); + Objects.checkFromIndexSize(off, len, b.length); + // len == 0 condition implicitly handled by loop bounds for (int i = 0 ; i < len ; i++) { write(b[off + i]); }