Envoi de gros fichiers via le OutputStream d'une URLConnection
Bonjour à tous !
Je cherche à envoyer une grande quantité de données (>100Mo) via le OutputStream d'une HttpURLConnection. Pour éviter une "OutOfMemoryException" j'écris des paquets d'octets d'une taille de bufferSize octets... Et je flush mon outputStream afin qu'il n'y ait pas de dépassement de mémoire (a priori).
Voilà mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
FileInputStream reader = new FileInputStream(file);
byte[] buff = new byte[bufferSize];
int readBytesNb;
byte[] readBytes;
while ((readBytesNb = reader.read(buff)) != -1) {
if (readBytesNb == bufferSize)
outputStream.write(buff); // ici une OutOfMemoryException
outputStream.flush();
} else {
// Le dernier paquet n'est pas plein
readBytes = new byte[readBytesNb];
System.arraycopy(buff, 0, readBytes, 0, readBytesNb);
outputStream.write(readBytes);
}
}
reader.close(); |
Le problème, c'est que j'obtiens quand même une "OutOfMemoryException" (à l'endroit signalé d'un "ici"), à croire que, malgré mon flush(), le contenu de mon OutputStream est toujours gardé en mémoire...
Auriez-vous une solution à m'apporter s'il vous plaît ?