public int read(byte[] b, int off, int len) throws IOException { for (;;) { int count; try { count = inf.inflate(b, off, len); } catch (DataFormatException dfe) { throw new ZipException(dfe.getMessage()); }  if (count > 0) return count;  if (inf.needsDictionary()) throw new ZipException("Need a dictionary"); else if (inf.finished()) return -1; else if (inf.needsInput()) fill(); else throw new InternalError("Don't know what to do"); }
public int read() throws IOException { int nread = read(onebytebuffer, 0, 1);  if (nread > 0) return onebytebuffer[0] & 0xff;  return -1;
  public int read(byte[] b, int off, int len) throws IOException  {    for (;;)      {	int count;	try	  {	    count = inf.inflate(b, off, len);	  } 	catch (DataFormatException dfe) 	  {	    throw new ZipException(dfe.getMessage());	  }	if (count > 0)	  return count;		if (inf.needsDictionary())	  throw new ZipException("Need a dictionary");	else if (inf.finished())	  return -1;	else if (inf.needsInput())	  fill();	else	  throw new InternalError("Don't know what to do");      }  }