2012-03-30 5 views
1

Vor kurzem versuche ich Google-API-Java-Client-Bibliothek verwenden, um auf Google-Dokument zuzugreifen. Ich kann diese Bibliothek verwenden, um eine Liste zu erhalten, neue Dokumente zu erstellen und erfolgreich zu aktualisieren. Wenn ich jedoch eine große Datei (> 10 MB) aus Google Document herunterladen möchte, verursacht dies OutOfMemoryError.Wie lade ich eine große Datei mit Google-API-Java-Client auf Android?

03-30 17:57:10.650: E/AndroidRuntime(11022): java.lang.OutOfMemoryError 
03-30 17:57:10.650: E/AndroidRuntime(11022): at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91) 
03-30 17:57:10.650: E/AndroidRuntime(11022): at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201) 
03-30 17:57:10.650: E/AndroidRuntime(11022): at com.google.api.client.http.AbstractInputStreamContent.copy(AbstractInputStreamContent.java:213) 
03-30 17:57:10.650: E/AndroidRuntime(11022): at com.google.api.client.http.AbstractInputStreamContent.copy(AbstractInputStreamContent.java:179) 
03-30 17:57:10.650: E/AndroidRuntime(11022): at com.google.api.client.http.HttpResponse.getContent(HttpResponse.java:384) 

Dies ist mein Code:

try { 
    ... 
    HttpRequest request = getRequestFactory().buildGetRequest(link); 
    HttpResponse response = request.execute(); 
    InputStream is = response.getContent(); 
    ... 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Der Antwortcode 200, und es kann erfolgreich auf kleine Dateien arbeiten. Gibt es eine Methode zum Herunterladen einer großen Datei mit Google-API-Java-Client?

+0

Ich denke, dass das, was Sie in Ihrem Code zu tun, wo die drei Punkte jetzt sind, ist der relevante Teil. Wenn die Datei zu groß ist, müssen Sie sie in das Dateisystem streamen, da Sie sie nicht im Speicher halten können. – koma

+0

Ich finde, dass das Problem die API-Funktion response.getContent() ist, die ByteArrayOutputStream verwendet, um die Dateidaten zu speichern. Wenn die Datei zu groß ist, wird OutOfMemoryError verursacht. – bukiya

Antwort

Verwandte Themen