code: public long skip(long n) throws IOException {
          if (n < 0L)
              throw new IllegalArgumentException("skip value is negative");
          synchronized (lock) {
              ensureOpen();
              int avail = buf.length - pos;
              if (avail > 0) {
                  if (n <= avail) {
                      pos += n;
                      return n;
                  } else {
                      pos = buf.length;
                      n -= avail;
                  }
              }
              return avail + super.skip(n);
          }
      }
docs: Skips characters.  This method will block until some characters are
  available, an I/O error occurs, or the end of the stream is reached.
  
  @param  n  The number of characters to skip
  
  @return    The number of characters actually skipped
  
  @exception  IllegalArgumentException  If <code>n</code> is negative.
  @exception  IOException  If an I/O error occurs