Skip to content

Commit b2e9316

Browse files
committed
DataHandle: tweak readString, skip and skipBytes
They can lean on the available(long) method.
1 parent aa6f962 commit b2e9316

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

src/main/java/org/scijava/io/handle/DataHandle.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,9 @@ default String readCString() throws IOException {
234234
}
235235

236236
/** Reads a string of up to length n. */
237-
default String readString(int n) throws IOException {
238-
final long avail = length() - offset();
239-
if (n > avail) n = (int) avail;
240-
final byte[] b = new byte[n];
237+
default String readString(final int n) throws IOException {
238+
final int r = (int) available(n);
239+
final byte[] b = new byte[r];
241240
readFully(b);
242241
return new String(b, getEncoding());
243242
}
@@ -433,11 +432,10 @@ default int read(byte[] b) throws IOException {
433432
* @throws IOException - if an I/O error occurs.
434433
*/
435434
default long skip(final long n) throws IOException {
436-
if (n < 0) return 0;
437-
final long remain = length() - offset();
438-
final long num = n < remain ? n : remain;
439-
seek(offset() + num);
440-
return num;
435+
final long skip = available(n);
436+
if (skip <= 0) return 0;
437+
seek(offset() + skip);
438+
return skip;
441439
}
442440

443441
// -- DataInput methods --
@@ -560,10 +558,11 @@ default String readUTF() throws IOException {
560558

561559
@Override
562560
default int skipBytes(final int n) throws IOException {
563-
final int skipped = (int) Math.min(n, length() - offset());
564-
if (skipped < 0) return 0;
565-
seek(offset() + skipped);
566-
return skipped;
561+
// NB: Cast here is safe since the value of n bounds the result to an int.
562+
final int skip = (int) available(n);
563+
if (skip < 0) return 0;
564+
seek(offset() + skip);
565+
return skip;
567566
}
568567

569568
// -- DataOutput methods --

0 commit comments

Comments
 (0)