Вы записываете полный буфер в вывод при каждой записи, даже если операция read(byte[])
не заполнила его полностью.
Кроме того, поскольку вы уже читаете в byte[]
, буферизованные потоки являются просто непроизводительными издержками. Используйте буферизованные потоки с однобайтовыми методами read()
и write()
.
Вот лучший пример для подражания.
InputStream is = urlConn.getInputStream();
try {
FileOutputStream os = new FileOutputStream(outputFile);
try {
byte[] buffer = new byte[2048];
while (true) {
int n = is.read(buffer);
if (n < 0)
break;
os.write(buffer, 0, n);
}
os.flush();
} finally {
os.close();
}
} finally {
is.close();
}