closeZipEntry();
closeEntry();
  public ZipEntry getNextEntry () throws IOException  {    if (current != null)      closeZipEntry();    if (in.read() != 'P'	|| in.read() != 'K')      return null;    int code = in.read();    while (code == '\001')      {	code = in.read();	if (code != '\002')	  return null;	in.skip(16);	int size = read4();	in.skip(4);	int fname_length = readu2();	int extra_length = readu2();	int fcomment_length = readu2();	in.skip(12+fname_length+extra_length+fcomment_length+size);	if (in.read() != 'P' || in.read() != 'K')	  return null;	code = in.read();      }    if (code == '\005')      {	if (in.read() != '\006')	  return null;	in.skip(16);	int comment_size = readu2();	in.skip(comment_size);	if (in.read() != 'P' || in.read() != 'K')	  return null;	code = in.read();      }    if (code != '\003'	|| in.read() != '\004')      return null;    int ex_version = readu2();    current_flags = readu2();    int method = readu2();    int modtime = readu2();    int moddate = readu2();    int crc = read4();    int compressedSize = read4();    int uncompressedSize = read4();    int filenameLength = readu2();    int extraLength = readu2();    byte[] bname = new byte[filenameLength];    readFully(bname);    ZipEntry entry = new ZipEntry(new String(bname, "8859_1"));    if (extraLength > 0)      {	byte[] bextra = new byte[extraLength];	readFully(bextra);	entry.extra = bextra;      }    entry.compressedSize = compressedSize;    entry.size = uncompressedSize;    entry.crc = (long) crc & 0xffffffffL;    entry.method = method;    entry.time = ZipEntry.timeFromDOS(moddate, modtime);    current = entry;    avail = uncompressedSize;    compressed_bytes = compressedSize;    return entry;  }