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 :
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
Auriez-vous une solution à m'apporter s'il vous plaît ?
Partager