При чтении InputStream HttpURLConnection есть ли какая-либо причина использовать одно из следующего вместо другого? Я видел, как оба используются в примерах.
Ручная буферизация:
while ((length = inputStream.read(buffer)) > 0) {
os.write(buf, 0, ret);
}
Буферизованный поток ввода
is = http.getInputStream();
bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append(current);
}
EDIT Я все еще новичок в HTTP в целом, но одно соображение, которое приходит на ум, заключается в том, что если я использую постоянное HTTP-соединение, я не могу просто читать, пока входной поток не станет пустым, верно? В этом случае мне не нужно было бы читать длину сообщения и просто читать входной поток для этой длины?
И точно так же, если НЕ используется постоянное соединение, является ли код, который я включил, на 100% пригодным для правильного чтения потока?
ByteArrayBuffer
? Но нет никакой причины иметь дело с отдельными байтами, когда вы могли бы иметь дело с массивами байтов. - person user207421   schedule 29.09.2017