java.net.URL lê fluxo para byte []

Estou tentando ler uma imagem de uma URL (com o pacote javajava.net.URL) para um byte []. "Tudo" funciona bem, exceto pelo fato de o conteúdo não estar sendo totalmente lido a partir do fluxo (a imagem está corrompida, não contém todos os dados da imagem) ... A matriz de bytes está sendo mantida em um banco de dados (BLOB). Eu realmente não sei qual é a abordagem correta, talvez você possa me dar uma dica :)

Esta é a minha primeira abordagem (código formatado, informações desnecessárias removidas ...):

URL u = new URL("http://localhost:8080/images/anImage.jpg");
int contentLength = u.openConnection().getContentLength();
Inputstream openStream = u.openStream();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();

Minha segunda abordagem foi essa (como você verá o comprimento do conteúdo está sendo buscado de outra maneira):

URL u = new URL(content);
openStream = u.openStream();
int contentLength = openStream.available();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();

Tanto o código resulta em uma imagem corrompida ... Eu já li este postde stackoverflow

questionAnswers(6)

yourAnswerToTheQuestion