public int read(byte[] buffer, int offset, int length) throws IOException {Arrays.checkOffsetAndCount(buffer.length, offset, length);for (int i = 0; i < length; i++) {int c;try {if ((c = read()) == -1) {return i == 0 ? -1 : i;}} catch (IOException e) {if (i != 0) {return i;}throw e;}buffer[offset + i] = (byte) c;}return length;}

public int read ( byte [ ] buffer , int offset , int length ) throws IOException { Arrays . checkOffsetAndCount ( buffer . length , offset , length ) ; for ( int i = 0 ; i < length ; i ++ ) { int c ; try { if ( ( c = read ( ) ) == - 1 ) { return i == 0 ? - 1 : i ; } } catch ( IOException e ) { if ( i != 0 ) { return i ; } throw e ; } buffer [ offset + i ] = ( byte ) c ; } return length ; }
public virtual int read(byte[] buffer, int offset, int length){java.util.Arrays.checkOffsetAndCount(buffer.Length, offset, length);{for (int i = 0; i < length; i++){int c;try{if ((c = read()) == -1){return i == 0 ? -1 : i;}}catch (System.IO.IOException e){if (i != 0){return i;}throw;}buffer[offset + i] = unchecked((byte)c);}}return length;}
