Here you can find the source of readBytes(InputStream in, byte[] data, int offset, int length)
public static int readBytes(InputStream in, byte[] data, int offset, int length) throws IOException
//package com.java2s; /*/* ww w .j a va 2s. c om*/ * JEF - Copyright 2009-2010 Jiyi (mr.jiyi@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.io.IOException; import java.io.InputStream; public class Main { public static int readBytes(InputStream in, byte[] data, int offset, int length) throws IOException { if (length < 0) throw new IOException( "This method just for reading bytes of a expected length from stream.The param length must >=0"); if (length == 0) return 0; if (offset + length > data.length) { throw new IOException("the container byte[] does not enough for the expected length."); } int left = length; int off = offset; while (left > 0) { int n; n = in.read(data, off, left); if (n == -1) break; left -= n; off += n; } return off - offset; } }