Bonjour, je dois réaliser un logiciel en langage java qui retrouve les fichiers de type odt contenu dans un dossier. Je souhaite donc que, lorsque l'on selectionne un dossier, un message d'erreur s'affiche si le dossier ne contient aucun fichier de type odt. J'ai donc créer deux fonctions :
- une qui verifie que mon adresse est valide,
- et une autre qui vérifie si le dossier contient des fichiers .odt.
Voici leur code :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public boolean adresseValide(Path adresse, JLabel message) { try { if (!Files.isDirectory(adresse)) { message.setText("L'adresse ne renvoie pas à un répertoire existant"); message.setForeground(Color.RED); } else if (!Files.isReadable(adresse)) { message.setText("Le dossier n'est pas lisible"); message.setForeground(Color.RED); } else if (!dossierContientODT(adresse)) { message.setText("Le dossier ne contient aucun fichier .odt"); message.setForeground(Color.RED); } else { message.setText("Adresse valide"); message.setForeground(Color.BLACK); return true; } } catch (IOException e) { message.setText("Vérifier le format de l'adresse ou l'existence de votre dossier"); message.setForeground(Color.RED); e.getMessage(); } return false; } public boolean dossierContientODT(Path adresse) throws IOException { try { DirectoryStream<Path> stream = Files.newDirectoryStream(adresse); Iterator<Path> it = stream.iterator(); while (it.hasNext()) { Path path = it.next(); if (Files.isDirectory(path)) { dossierContientODT(path); } else { int position; position = String.valueOf(path.getFileName()).lastIndexOf("."); if (position > -1 && String.valueOf(path.getFileName()).substring(position).equals(".odt")) { return true; } } } } catch (IOException e) { e.printStackTrace(); } return false; }
J'ai cherché sur internet, et relu plusieurs fois mon code, mais je n'arrive pas à faire ce que je veux : je veux vérifier si les fichiers de mon dossier sont des .odt mais aussi si les fichiers des sous-dossier de mon dossier sont des .odt . Je pensais qu'en faisant un appel récursif comme je l'ai fait, cela suffirai mais apparemment non.
Merci d'avance pour l'aide que vous me fournirez.
Partager