@ У Майкла Лоумана правильный ответ, но я подумал, что покажу другой способ, просто рекламируя функцию класса DataInputStream.
Вы можете прочитать все в одном-go поведение, как придирка perl, с помощью метода DataInputStream.readFully()
.В вашем примере вы можете прочитать байты с помощью этого метода, затем записать их и расшифровать, используя в качестве CipherOutputStream вместо CipherInputStream.
Рассмотрите следующий фрагмент в качестве примера:
byte[] byteBuffer = new byte[(int) inputFile.length()];
DataInputStream dis = new DataInputStream(inputStream);
dis.readFully(byteBuffer);
dis.close();
CipherOutputStream cos = new CipherOutputStream(outputStream, cipher);
cos.write(byteBuffer);
cos.close();