code: public long skip(long n) throws IOException {
          if (n < 0) {
              throw new IllegalArgumentException("negative skip length");
          }
          ensureOpen();
          int max = (int)Math.min(n, Integer.MAX_VALUE);
          int total = 0;
          while (total < max) {
              int len = max - total;
              if (len > b.length) {
                  len = b.length;
              }
              len = read(b, 0, len);
              if (len == -1) {
                  reachEOF = true;
                  break;
              }
              total += len;
          }
          return total;
      }
docs: Skips specified number of bytes of uncompressed data.
  @param n the number of bytes to skip
  @return the actual number of bytes skipped.
  @exception IOException if an I/O error has occurred
  @exception IllegalArgumentException if {@code n < 0}