Ho una chiamata API che restituisce un array di byte. Attualmente sto trasmettendo il risultato in un array di byte, quindi assicurati che i checksum corrispondano e quindi scriva ByteArrayOutputStream su File. Il codice è qualcosa di simile e funziona piuttosto bene.Come scrivere un InputStream potenzialmente enorme su File?
String path = "file.txt";
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
FileOutputStream stream = new FileOutputStream(path);
stream.write(byteBuffer.toByteArray());
La mia preoccupazione io che il risultato da InputStream potrebbe potenzialmente essere più grande della dimensione heap in Android e ho potuto ottenere eccezioni OutOfMemory se l'intero array di byte è in memoria. Qual è il modo più elegante per scrivere inputStream in file in blocchi, in modo tale che l'array di byte non sia mai più grande della dimensione heap?
suggerisci che la mia preoccupazione è irrilevante? – JoeLallouz
Basta eliminare l'uso di 'ByteArrayOutputStream'. (Ho letto male ... il mio uso del tutto?) –