2012-04-25 3 views
1

J'ai une grande quantité de fichiers dans un fichier ZIP (disons 1000 images, certains fichiers db, fichiers binaires, ...). A l'intérieur, j'ai un fichier XML que je dois trouver et analyser. Les informations qui en proviennent sont affichées à l'écran. Le problème est, quand je suis entrée Itère zip en utilisant:Android - itération via Zipentry

InputStream inputStream = new FileInputStream(zipPath); 
    in = new ZipInputStream(inputStream); 

    for (ZipEntry entry = in.getNextEntry(); entry != null; entry = in.getNextEntry()) { 
    ...some code here... 
    } 

Alors, quand je me sers Log.d, je vois, il est le fichier par fichier itération, en cas de grande quantité de fichiers, il pourrait prendre plusieurs minutes. Yat-il un meilleur moyen, comment localiser un fichier spécifique parmi d'autres dans le fichier ZIP? L'approche «force brute» que j'utilise maintenant prend du temps.

Merci pour toutes les idées

Waypoint

Répondre

0

Vous pouvez probablement faire:

BufferedReader in = new BufferedReader(new InputStreamReader(zipfile.getInputStream(entry))); 
0

Lors de l'extraction des fichiers spécifiques, vous devez utiliser un ZipFile. En particulier, ZipFile.getEntry().

Cela ne devrait poser aucun problème puisque vous utilisez un fichier. Cependant, si vous avez seulement un InputStream (ou si vous préférez utiliser ZipInputStream pour une raison quelconque), si vous contrôlez la façon dont le fichier zip est construit, vous devriez mettre le fichier XML comme première entrée.

Questions connexes