private String readUTFBody(long utflen) throws IOException {
  StringBuilder sbuf=new StringBuilder();
  if (!blkmode) {
    end=pos=0;
  }
  while (utflen > 0) {
    int avail=end - pos;
    if (avail >= 3 || (long)avail == utflen) {
      utflen-=readUTFSpan(sbuf,utflen);
    }
 else {
      if (blkmode) {
        utflen-=readUTFChar(sbuf,utflen);
      }
 else {
        if (avail > 0) {
          System.arraycopy(buf,pos,buf,0,avail);
        }
        pos=0;
        end=(int)Math.min(MAX_BLOCK_SIZE,utflen);
        in.readFully(buf,avail,end - avail);
      }
    }
  }
  return sbuf.toString();
}

private String readUTFBody ( long utflen ) throws IOException { StringBuilder sbuf = new StringBuilder ( ) ; if ( ! blkmode ) { end = pos = 0 ; } while ( utflen > 0 ) { int avail = end - pos ; if ( avail >= 3 || ( long ) avail == utflen ) { utflen -= readUTFSpan ( sbuf , utflen ) ; } else { if ( blkmode ) { utflen -= readUTFChar ( sbuf , utflen ) ; } else { if ( avail > 0 ) { System . arraycopy ( buf , pos , buf , 0 , avail ) ; } pos = 0 ; end = ( int ) Math . min ( MAX_BLOCK_SIZE , utflen ) ; in . readFully ( buf , avail , end - avail ) ; } } } return sbuf . toString ( ) ; }
reads in the " body " ( i . e . , the utf representation minus the 2 - byte or 8 - byte length header ) of a utf encoding , which occupies the next utflen bytes .
