Если вы используете InputStream для чтения, используйте OutputStream для записи, то есть BufferedOutputStream-обернутый FileOutputStream. Кроме того, ваш код довольно неэффективен, поскольку он копирует только один байт за раз. Я бы предложил создать буфер байтового массива и использовать следующие подходящие методы чтения / записи:
int BufferedInputStream.read(byte[] buffer, int offset, int length)
void BufferedOutputStream.write(byte[] buffer, int offset, int length)