Второй, потенциально долгий путь.Чтение блока за раз почти всегда предпочтительнее, чем чтение байта за раз, если только вы действительно не хотите читать только один байт.
Однако ваш код в настоящее время не работает,в том, что вы не принимаете во внимание возвращаемое значение read
, за исключением проверки того, что что-то было прочитано.Возможно, он не прочитал 2048 байт.Вы должны использовать что-то вроде:
int bytesRead;
while ((bytesRead = inputStream.read(buffer, 0, buffer.length)) > 0)
{
// Use bytesRead here
}
С этим кодом вы вполне можете спокойно читать более 2К за раз в некоторых ситуациях ... это зависит отсеть, но по крайней мере код будет надежным.