2010-08-04 6 views
4

J'ai un fichier zip de 100 meg que j'ai besoin de télécharger lorsque l'application démarre. Il doit décompresser sur la carte SD (400 méga). Je préférerais ne pas avoir à le toucher car de nombreux téléphones n'auront pas 400 mégaoctets sur le stockage du téléphone.Android Télécharger Zip to SD card?

peut-il être fait (quelqu'un a un exemple?)

Merci, ian

Répondre

10

peut être fait. Que recherchez vous exactement? La routine de téléchargement ou comment faire le contrôle? Voici la méthode de téléchargement, vous devriez l'exécuter dans une asyncTask ou plus.

/** 
* Downloads a remote file and stores it locally 
* @param from Remote URL of the file to download 
* @param to Local path where to store the file 
* @throws Exception Read/write exception 
*/ 
static private void downloadFile(String from, String to) throws Exception { 
    HttpURLConnection conn = (HttpURLConnection)new URL(from).openConnection(); 
    conn.setDoInput(true); 
    conn.setConnectTimeout(10000); // timeout 10 secs 
    conn.connect(); 
    InputStream input = conn.getInputStream(); 
    FileOutputStream fOut = new FileOutputStream(to); 
    int byteCount = 0; 
    byte[] buffer = new byte[4096]; 
    int bytesRead = -1; 
    while ((bytesRead = input.read(buffer)) != -1) { 
     fOut.write(buffer, 0, bytesRead); 
     byteCount += bytesRead; 
    } 
    fOut.flush(); 
    fOut.close(); 
} 

Vous pouvez également vérifier si le téléphone est au moins connecté au WiFi (et 3G); Sinon, les gens vont se fâcher quand ils ont besoin de télécharger 100m via un réseau téléphonique lent.