Comment écrire un potentiellement énorme InputStream de Fichier?

J'ai un appel d'API qui renvoie un tableau d'octets. Je suis actuellement stream le résultat dans un tableau d'octets, alors assurez-vous que les sommes de contrôle de match, puis écrire le ByteArrayOutputStream de Fichier. Le code est quelque chose comme ça et ça marche plutôt bien.

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

Mon souci, j'ai que le résultat de inputstream pourrait être plus grande que la taille du segment de mémoire dans android et j'ai pu obtenir OutOfMemory des exceptions si l'ensemble du tableau d'octets en mémoire. Quelle est la façon la plus élégante d'écrire l'inputStream de fichier en morceaux, tels que le tableau d'octets n'est jamais plus grande que la taille du segment de mémoire?

vous suggérant ma préoccupation n'est pas pertinent?
Simplement éliminer l'utilisation de ByteArrayOutputStream. (Je l'ai lu de mal .. mon utilisation?)

OriginalL'auteur JoeLallouz | 2012-03-28