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 : 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();
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 ?