@@ -233,10 +233,9 @@ default String readCString() throws IOException {
233233 }
234234
235235 /** Reads a string of up to length n. */
236- default String readString (int n ) throws IOException {
237- final long avail = length () - offset ();
238- if (n > avail ) n = (int ) avail ;
239- final byte [] b = new byte [n ];
236+ default String readString (final int n ) throws IOException {
237+ final int r = (int ) available (n );
238+ final byte [] b = new byte [r ];
240239 readFully (b );
241240 return new String (b , getEncoding ());
242241 }
@@ -432,11 +431,10 @@ default int read(byte[] b) throws IOException {
432431 * @throws IOException - if an I/O error occurs.
433432 */
434433 default long skip (final long n ) throws IOException {
435- if (n < 0 ) return 0 ;
436- final long remain = length () - offset ();
437- final long num = n < remain ? n : remain ;
438- seek (offset () + num );
439- return num ;
434+ final long skip = available (n );
435+ if (skip <= 0 ) return 0 ;
436+ seek (offset () + skip );
437+ return skip ;
440438 }
441439
442440 // -- DataInput methods --
@@ -559,10 +557,10 @@ default String readUTF() throws IOException {
559557
560558 @ Override
561559 default int skipBytes (final int n ) throws IOException {
562- final int skipped = (int ) Math .min (n , length () - offset ());
563- if (skipped < 0 ) return 0 ;
564- seek (offset () + skipped );
565- return skipped ;
560+ final int skip = (int ) Math .min (n , length () - offset ());
561+ if (skip < 0 ) return 0 ;
562+ seek (offset () + skip );
563+ return skip ;
566564 }
567565
568566 // -- DataOutput methods --
0 commit comments