Как указывает Javadoc (и имена параметров указывают), метод со смещением и numBytes использует только часть буфера для ввода своего вывода.
public int read(byte[] b,
int off,
int len)
throws IOException
Parameters:
b - the buffer into which the data is read.
off - the start offset of the data.
len - the maximum number of bytes read.
Этот метод можно использовать, если вы хотите повторно использовать существующий буфер, в котором уже есть данные, которые вы не хотите закрывать (конечно, numBytes
, начиная с offset
, будет перезаписано).
В Java почти все операции с буферами предлагают такой интерфейс. При правильном использовании вы можете избежать копирования / буферизации данных больше времени, чем необходимо.