in src/main/java/org/apache/commons/io/input/UnsynchronizedBufferedInputStream.java [384:420]
public long skip(final long amount) throws IOException {
// Use local refs since buf and in may be invalidated by an
// unsynchronized close()
final byte[] localBuf = buffer;
final InputStream localIn = inputStream;
if (localBuf == null) {
throw new IOException("Stream is closed");
}
if (amount < 1) {
return 0;
}
if (localIn == null) {
throw new IOException("Stream is closed");
}
if (count - pos >= amount) {
pos += amount;
return amount;
}
long read = count - pos;
pos = count;
if (markPos != IOUtils.EOF && amount <= markLimit) {
if (fillBuffer(localIn, localBuf) == IOUtils.EOF) {
return read;
}
if (count - pos >= amount - read) {
pos += amount - read;
return amount;
}
// Couldn't get all the bytes, skip what we read
read += count - pos;
pos = count;
return read;
}
return read + localIn.skip(amount - read);
}