private int read1(char[] cbuf,int off,int len) throws IOException {
  if (nextChar >= nChars) {
    if (len >= cb.length && markedChar <= UNMARKED && !skipLF) {
      return in.read(cbuf,off,len);
    }
    fill();
  }
  if (nextChar >= nChars)   return -1;
  if (skipLF) {
    skipLF=false;
    if (cb[nextChar] == '\n') {
      nextChar++;
      if (nextChar >= nChars)       fill();
      if (nextChar >= nChars)       return -1;
    }
  }
  int n=Math.min(len,nChars - nextChar);
  System.arraycopy(cb,nextChar,cbuf,off,n);
  nextChar+=n;
  return n;
}

private int read1 ( char [ ] cbuf , int off , int len ) throws IOException { if ( nextChar >= nChars ) { if ( len >= cb . length && markedChar <= UNMARKED && ! skipLF ) { return in . read ( cbuf , off , len ) ; } fill ( ) ; } if ( nextChar >= nChars ) return - 1 ; if ( skipLF ) { skipLF = false ; if ( cb [ nextChar ] == '\n' ) { nextChar ++ ; if ( nextChar >= nChars ) fill ( ) ; if ( nextChar >= nChars ) return - 1 ; } } int n = Math . min ( len , nChars - nextChar ) ; System . arraycopy ( cb , nextChar , cbuf , off , n ) ; nextChar += n ; return n ; }
reads characters into a portion of an array , reading from the underlying stream if necessary .
