private int readLeByte() throws IOException {
   if (avail <= 0) {
     fillBuf();
     if (avail <= 0) throw new ZipException("EOF in header");
   }
   return buf[len - avail--] & 0xff;
 }
 private int readBuf(byte[] out, int offset, int length) throws IOException {
   if (avail <= 0) {
     fillBuf();
     if (avail <= 0) return -1;
   }
   if (length > avail) length = avail;
   System.arraycopy(buf, len - avail, out, offset, length);
   avail -= length;
   return length;
 }