publicclass Skip { privatestaticvoid dotest(InputStream in, int curpos, long total, long toskip, long expected) throws Exception
{
System.err.println("\nCurrently at pos = " + curpos + "\nTotal bytes in the stream = " + total + "\nNumber of bytes to skip = " + toskip + "\nNumber of bytes that should be skipped = " +
expected);
// position to curpos; EOF if negative
in.reset(); int avail = curpos >= 0 ? curpos : in.available(); long n = in.skip(avail); if (n != avail) { thrownew RuntimeException("Unexpected number of bytes skipped = " + n);
}
long skipped = in.skip(toskip);
System.err.println("actual number skipped: "+ skipped);
if (skipped != expected) { thrownew RuntimeException("Unexpected number of bytes skipped = " + skipped);
}
}
publicstaticvoid main(String argv[]) throws Exception { int total = 1024;
ByteArrayInputStream in = new ByteArrayInputStream(newbyte[total]);
/* test for skip */
dotest(in, 0, total, 23, 23);
dotest(in, 10, total, 23, 23);
/* test for negative skip */
dotest(in, 0, total, -23, 0);
/* check for skip after EOF */
dotest(in, -1, total, 20, 0);
/* check for skip beyond EOF starting from before EOF */
dotest(in, 0, total, total+20, total);
/* check for skip if the pos + toskip causes integer overflow */
dotest(in, 10, total, Long.MAX_VALUE, total-10);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.