2012-05-31 4 views
0

J'essaie d'écrire la classe pour télécharger le fichier du serveur et le stocker sur la carte SD.Mais j'obtiens une Exception comme java.io.FileNotFoundException: /mnt/sdcard/files.zip (Aucun fichier ou répertoire de ce nom).Erreur lors du téléchargement des données

Ma principale classe est

public class DownloadZipActivity extends Activity { 
    /** Called when the activity is first created. */ 
    int count; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     try { 

     URL url = new URL(
       "url to download"); 

     /* URLConnection conexion = url.openConnection(); 
     conexion.connect(); 
*/ 
      HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
      conn.setDoInput(true); 
      conn.setConnectTimeout(1000); // timeout 10 secs 
      conn.connect(); 

     int lenghtOfFile = conn.getContentLength(); 
     Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); 

     InputStream input = new BufferedInputStream(url.openStream()); 
     OutputStream output = new FileOutputStream("/mnt/sdcard/external_sd/files.zip"); 

     byte data[] = new byte[1024]; 

     long total = 0; 

      while ((count = input.read(data)) != -1) { 
       total += count; 
     //  publishProgress(""+(int)((total*100)/lenghtOfFile)); 

        output.write(data, 0, count); 
       } 


      output.flush(); 
      output.close(); 
      input.close(); 
     } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

     String zipFile = Environment.getExternalStorageDirectory() + "/files.zip"; 
     String unzipLocation = Environment.getExternalStorageDirectory() + "/unzipped/"; 
     Decompress d = new Decompress(zipFile, unzipLocation); 
     d.unzip(); 
    } 
} 

et décomprimer classe est

public class Decompress { 
    String _zipFile; 
     String _location; 
    public Decompress(String zipFile, String unzipLocation) { 

     // TODO Auto-generated constructor stub 
     _zipFile = zipFile; 
     _location = unzipLocation; 

     _dirChecker(""); 
    } 
    public void unzip() { 
     try { 
      FileInputStream fin = new FileInputStream(_zipFile); 
      ZipInputStream zin = new ZipInputStream(fin); 
      ZipEntry ze = null; 
      while ((ze = zin.getNextEntry()) != null) { 
      Log.v("Decompress", "Unzipping " + ze.getName()); 

      if(ze.isDirectory()) { 
       _dirChecker(ze.getName()); 
      } else { 
       FileOutputStream fout = new FileOutputStream(_location + ze.getName()); 
       for (int c = zin.read(); c != -1; c = zin.read()) { 
       fout.write(c); 
       } 

       zin.closeEntry(); 
       fout.close(); 
      } 

      } 
      zin.close(); 
     } catch(Exception e) { 
      Log.e("Decompress", "unzip", e); 
     } 

     } 

     private void _dirChecker(String dir) { 
     File f = new File(_location + dir); 

     if(!f.isDirectory()) { 
      f.mkdirs(); 
     } 
     } 
} 
+0

S'il vous plaît voir le lien suivant de ma question et aussi voir ma réponse à cette question [Download Zip File] (http://stackoverflow.com/questio ns/9324103/télécharger-et-extraire-zip-fichier-dans-android) –

Répondre

0

Regardez attentivement votre code

Lors du téléchargement et l'enregistrement de fichiers que vous enregistrez dans chemin suivant

OutputStream output = new FileOutputStream("/mnt/sdcard/external_sd/files.zip"); 

Mais en lisant vous faites référence suivant chemin

String zipFile = Environment.getExternalStorageDirectory() + "/files.zip"; 

qui équivaut à

String zipFile = "/mnt/sdcard/files.zip"; 

Vous devriez écrire

String zipFile = Environment.getExternalStorageDirectory() + "/external_sd/files.zip"; 

Hope this helps

Questions connexes