2011-10-19 2 views
0

J'ai beaucoup de zips avec une grande quantité de fichiers que je dois décompresser sur la carte SD.Dézipper des fichiers avec une grande quantité de petits fichiers à l'intérieur

Actuellement j'utilise le package util.zip avec Zipentry pour chaque fichier dans les zips. Cela fonctionne bien mais est très lent.

Donc je me demande s'il y a une lib qui peut gérer ces fichiers plus rapidement que le zip normal de Java/Android. Editer: Les zips sont des archives qui font environ 5 à 10 Mo de large et contiennent environ 50 à 100 fichiers jpg qui font partie d'une image. J'ai besoin d'extraire tous les zips dans un dossier spécifique. Lent signifie que les mêmes fichiers sont extraits sur un iPhone en une fraction de temps.

Modifier le code 2:

ZipInputStream zin = new ZipInputStream(fd); 
    ZipEntry ze = null; 
    while ((ze = zin.getNextEntry()) != null) { 
    System.out.println("Unzipping " + ze.getName()); 

    if (ze.isDirectory()) { 
     File f = new File(targetFilePath + ze.getName()); 

     if (!f.isDirectory()) { 
     f.mkdirs(); 
     } 
    } else { 
     int size; 
     byte[] buffer = new byte[2048]; 

     FileOutputStream outStream = new FileOutputStream(targetFilePath + ze.getName() + ".tile"); 
     BufferedOutputStream bufferOut = new BufferedOutputStream(outStream, buffer.length); 

     while ((size = zin.read(buffer, 0, buffer.length)) != -1) { 
     bufferOut.write(buffer, 0, size); 
     } 

     bufferOut.flush(); 
     bufferOut.close(); 
    } 
    } 
    zin.close(); 
+0

Veuillez donner des exemples sur ce que signifie "grande quantité de fichiers" et "très lent". –

+0

Salut LUkas J'ai édité ma question, j'espère que c'est plus clair maintenant. – Thommy

+0

Montrez-nous du code. – EJP

Répondre

1

Le meilleur des cas, vous pouvez faire est d'aller NDK façon. AFAIK, Google fournit même des en-têtes/API pris en charge dans NDK sur zlib.

Questions connexes