code: public long skip(long numToSkip) throws IOException {
          // REVIEW
          // This is horribly inefficient, but it ensures that we
          // properly skip over bytes via the TarBuffer...
          //
          byte[] skipBuf = new byte[8 * 1024];
          long skip = numToSkip;
          while (skip > 0) {
              int realSkip = (int) (skip > skipBuf.length ? skipBuf.length : skip);
              int numRead = this.read(skipBuf, 0, realSkip);
              if (numRead == -1) {
                  break;
              }
              skip -= numRead;
          }
          return (numToSkip - skip);
      }
docs: Skip bytes in the input buffer. This skips bytes in the
  current entry's data, not the entire archive, and will
  stop at the end of the current entry's data if the number
  to skip extends beyond that point.
  
  @param numToSkip The number of bytes to skip.
  @return the number actually skipped
  @throws IOException on error