return new InflaterInputStream(inp, new Inflater(true));
final Inflater inf = new Inflater(true); final int sz = (int) entry.getSize(); return new InflaterInputStream(inp, inf) { public int available() throws IOException { if (sz == -1) return super.available(); if (super.available() != 0) return sz - inf.getTotalOut(); return 0; } };
  public InputStream getInputStream(ZipEntry entry) throws IOException  {    checkClosed();		HashMap entries = getEntries();		String name = entry.getName();		ZipEntry zipEntry = (ZipEntry) entries.get(name);		if (zipEntry == null)      return null;    PartialInputStream inp = new PartialInputStream(raf, 1024);    inp.seek(zipEntry.offset);    if (inp.readLeInt() != LOCSIG)      throw new ZipException("Wrong Local header signature: " + name);    inp.skip(4);    if (zipEntry.getMethod() != inp.readLeShort())      throw new ZipException("Compression method mismatch: " + name);    inp.skip(16);    int nameLen = inp.readLeShort();    int extraLen = inp.readLeShort();    inp.skip(nameLen + extraLen);    inp.setLength(zipEntry.getCompressedSize());		int method = zipEntry.getMethod();    switch (method)      {      case ZipOutputStream.STORED:	return inp;      case ZipOutputStream.DEFLATED:	return new InflaterInputStream(inp, new Inflater(true));      default:				throw new ZipException("Unknown compression method " + method);		}	}