entryAtEOF = true;
  public void closeEntry() throws IOException  {    if (crc == null)      throw new IllegalStateException("Closed.");    if (entry == null)      return;    if (method == ZipOutputStream.DEFLATED)      {	if ((flags & 8) != 0)	  {	    /* We don't know how much we must skip, read until end. */	    byte[] tmp = new byte[2048];	    while (read(tmp) > 0)	      ;	    /* read will close this entry */	    return;	  }	csize -= inf.getTotalIn();	avail = inf.getRemaining();      }    if (avail > csize && csize >= 0)      avail -= csize;    else      {	csize -= avail;	avail = 0;	while (csize != 0)	  {	    long skipped = in.skip(csize & 0xffffffffL);	    if (skipped <= 0)	      throw new ZipException("zip archive ends early.");	    csize -= skipped;	  }      }    size = 0;    crc.reset();    if (method == ZipOutputStream.DEFLATED)      inf.reset();    entry = null;  }