Inputstream não lê dado inteiro

O que há de errado com meu código, estou lendo o arquivo e gravando só pra ver se o código funciona sem alterá-lo, porém quando eu gravo o arquivo ele sempre fica 2048 bytes menor que o arquivo original:

byte[] buffer = new byte[2048];
int readBytes = inputstream.read(buffer, 0, 2048);
while(readBytes !=-1){  
	readBytes = inputstream.read(buffer, 0, 2048); 
	for(int i = 0;i<readBytes;i++){    
		int decimal = buffer[i];
		String binario = conversor.ConverterDecimalToBinario(decimal);
		int decimal1 = conversor.ConverterBinarioToDecimal(binario);
		outputstream.write(decimal1); // GRAVAÇÃO
	} // FIM DO FOR
} // FIM DO WHILE

Você não está processando 2048 os bytes que foram lidos antes de entrar no while.

1 curtida