Bonsoir !
Je développe un programme qui a pour but d'analyser un fichier donné par l'utilisateur.
Je demande à l'utilisateur de saisir le chemin de son fichier, et je crée ainsi une instance de la classe Fichier.
Dans les méthodes de cette classe Fichier, je dois lire le contenu de ce fichier grâce à la méthode FileReader. Or, à chaque fois que j'appelle cette méthode, je dois gérer les exceptions (fichier inexistant ou corrompu).
Comment faire pour ne pas avoir à gérer l'exception à chaque appel du fichier, mais une fois pour toutes ?
Voilà la structure de mon programme :
MAJ : J'ai testé également de mettre le try & catch dans le main ; mais à la compilation, ça renvoit des erreurs :
Code : 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 import java.io.* ; import java.util.*; import java.text.DateFormat; import java.text.SimpleDateFormat; public class Fichier{ String nom_ ; // Le nom du fichier File file_ ; /** Constructeur*/ public Fichier(String nom){ nom_ = nom; file_ = new File(nom); } /** Exécute le programme de nettoyage, qui supprime * tous les espaces et tabulations en début de ligne*/ private void nettoie(){ try { String texte = ""; // Le texte modifié est stocké temporairement ici FileReader codeLu = new FileReader(nom_); // Ouvre le fichier en lecture int lu = codeLu.read() ; // renvoie le premier caractère (codé en int) du fichier while (lu != -1) {blablabla } FileWriter codeEcrit = new FileWriter(nom_); // Ouvre le fichier en écriture codeEcrit.write(texte); // Ecrit le texte nettoyé dans le fichier codeEcrit.close(); // ferme le fichier en écriture Console.ecrireNL("Le fichier " + nom_ + " a été nettoyé !"); } catch (FileNotFoundException e) { // Erreur à renvoyer si l'adresse du fichier est incorrecte Console.ecrireNL("Le fichier " + nom_ +" n'existe pas !"); } catch (IOException e) { // Autres erreurs Console.ecrireNL("Erreur de lecture !"); } } /** Exécute le programme d'indentation, qui ajoute le nombre * de tabulations nécessaires en début de ligne*/ private void indente(){ try { String texte = ""; // Le texte modifié est stocké temporairement ici FileReader codeLu = new FileReader(nom_); // Ouvre le fichier en lecture int lu = codeLu.read() ; // renvoie le premier caractère (codé en int) du fichier int nbTab = 0 ; // le nombre de tabulations à mettre en début de ligne est initialisé à 0 String tabulation = ""; // permet de stocker ce nombre sous forme de String (alinéa) while (lu != -1) {balablabla } FileWriter codeEcrit = new FileWriter(nom_); // Ouvre le fichier en écriture codeEcrit.write(texte); // Ecrit le texte indenté dans le fichier codeEcrit.close(); // ferme le fichier en écriture Console.ecrireNL(flag1 + "Le fichier " + nom_ + " a été indenté !"); } catch (FileNotFoundException e) { // Erreur à renvoyer si l'adresse du fichier est incorrecte Console.ecrireNL("Le fichier " + nom_ +" n'existe pas !"); } catch (IOException e) { // Autres erreurs Console.ecrireNL("Erreur de lecture !"); } } /** Interface avec l'utilisateur*/ public static void main(String[] args) { Console.ecrireNL("Entrez le nom du fichier à indenter (avec son chemin et son extension) :"); String nom = Console.lireMot(); // lit le nom du fichier saisi par l'utilisateur Fichier monFichier = new Fichier(nom); // crée un Fichier avec ce nom monFichier.nettoie(); // lance le programme de nettoyage monFichier.indente(); // lance le programme d'indentation } }
"Unreachable catch block for FileNotFoundException. This exception is never thrown from the try statement body" et idem pour IOException...
Partager