Во-первых, ваша проблема в том, что вы закрываете входной поток в цикле после считывания первого байта. Не делай этого.
Во-вторых, нет смысла писать в ByteArrayOutputStream
, если все, что вы собираетесь сделать, это просто записать его в FileOutputStream
. Напишите прямо в файл.
В-третьих, используйте byte[]
и BufferedInputStream
и BufferedOutputStream
, чтобы вы могли читать больше байтов за раз.
В-четвертых, не обращайте внимания на вышесказанное и просто используйте commons-io .