2012-12-04 5 views
-1

J'essaie de décompresser un fichier en Java et d'ajouter tout le contenu à une liste de tableau plutôt que d'écrire sur un disque. Le problème que j'ai est que je passe dans un certain chemin vers un fichier zip et puis quand il lit le fichier zip et ajoute le fichier à la liste - quand je viens de traiter les fichiers, ils ont des chemins étranges dans mon répertoire de projet n'existe pas.Dézipper les fichiers - chemins

Quelqu'un peut-il m'aider ici? public void processZipFile (String path) {

File file = new File(path); 
    file.setReadable(true); 
    ZipFile zip; 
    ArrayList<File> files = new ArrayList<File>(); 
    try { 
     zip = new ZipFile(file); 
     Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zip 
       .entries(); 
     while (entries.hasMoreElements()) { 
      ZipEntry entry = entries.nextElement(); 
      File f = new java.io.File(entry.getName()); 
      allFiles.add(f); 
     } 
    } catch (ZipException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+3

* "chemins étranges" * Description vague. Quels chemins sont dans le Zip? Quelle est la racine du chemin d'extraction? Quels types de chemins attendiez-vous? Quel type de chemins avez-vous eu? .. –

+0

est question assez claire? –

+0

Remarque: Si vous utilisez Java SE 7, envisagez d'utiliser la nouvelle API de fichiers NIO pour travailler avec les fichiers et les fichiers Zip. – Puce

Répondre

0

de AFAIK, votre entry.getName() ne retournera rien utile qui peut être utilisé pour ouvrir un fichier. Rappelez-vous que c'est juste une entrée zip et non un fichier physique. Je vous suggère de stocker les inputStreams pour chaque entrée de votre tableau en utilisant zipFile.getInputStream puis d'extraire votre contenu de l'inputtream et enfin fermer ces flux quand ils sont inutiles pour vous.

Questions connexes