Bonjour,
J' ai un projet en java pur : c'est un programme qui parcourt un répertoire qui contient des fichiers zip. Avez-vous une idée ? Est-ce je dois utiliser un boucle for ? ou autre ?
Bonjour,
J' ai un projet en java pur : c'est un programme qui parcourt un répertoire qui contient des fichiers zip. Avez-vous une idée ? Est-ce je dois utiliser un boucle for ? ou autre ?
Salut,
Il y a plusieurs solutions pour parcourir un dossier :
- la méthode listFiles de la classe File permet de lister les fichiers et dossiers contenus dans un dossier. On peut mettre un filtre qui ne sélectionne que les fichiers que l'on désire (on peut tester leur type, leur nom, etc...).
Ensuite, avec un for en effet, ou un forEach (comme dans l'exemple qui suit), tu pourras parcourir les fichiers
Exemple, avec un filtre qui cherche les fichiers zip
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 File dossier = ... for(File file : dossier.listFiles(f-> f.isFile() && f.getName().endsWith(".zip"))) { System.out.print(file); }- La class DirectoryStream permet également de parcourir un dossier (avec une vrai gestion des erreurs) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 try(DirectoryStream<Path> stream = Files.newDirectoryStream(dossier.toPath(), f-> Files.isRegularFile(f) && f.getFileName().toString().endsWith(".zip"))) { stream.forEach(file-> { System.out.print(file); }); } catch (IOException e) { e.printStackTrace(); }- un filewalker permet également de parcourir un dossier, mais récursivement en plus (en cherchant dans les sous-dossiers)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 try { Files.walkFileTree(dossier.toPath(), new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { if ( file.getFileName().toString().endsWith(".zip") ) { System.out.println(file); } return super.visitFile(file, attrs); } }); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Partager