[JAVA] problème de lecture de fichier

problème de lecture de fichier [JAVA] - Java - Programmation

Marsh Posté le 19-05-2004 à 14:18:02    

Bonjour, je souhaite lire un fichier qui en réalité est une liste de nom .
cette liste je veux l'utiliser dans un menu (les items du menu sont les noms de la liste (fichier texte)).
cependant, ma méthode de lecture de fichier m'indique  
[#0055aa]Erreur --java.io.FileNotFoundException: liste.txt (Le fichier spécifié est introuvable)
je vous montre mon prog .
ps: je ss débutante en java...
 
Merci d'avance
 
 
 
public void LireTest (){
 try {
     
  FileReader file = new FileReader ("liste.txt" );
  BufferedReader buff = new BufferedReader (file);
  boolean eof = false;
  while (!eof) {
   String line = buff.readLine();
   if (line==null)  
   eof = true;
   else  
    System.out.println(line);
          }
    buff.close();
    }
    catch (IOException e){
     
    System.out.println("Erreur --" + e.toString());
   }
  }

Reply

Marsh Posté le 19-05-2004 à 14:18:02   

Reply

Marsh Posté le 19-05-2004 à 14:21:40    

c'est simpleent qu'il n'a pas trouvé ton ficher.
 
Est-ce que tu es sûre que le fichier est dans le répertoire courant où tu lances ton appli?
 

Reply

Marsh Posté le 19-05-2004 à 14:22:51    

oui je suis sure.
je travaille avec Eclipse et je le crée dans le même package que mes classes...
si je fé une grosse bétise, vous pouvez me dire...

Reply

Marsh Posté le 19-05-2004 à 14:23:38    

houlà...Et tu fais run avec Eclipse?? :)
Je crois qu'il crée un environnement d'exécution temporaire, Eclipse, et donc, si ton fichier n'est pas 'exporté' dans cet environnement en même temps que les classes, ben il ne va pas être trouvé....
 
Essaie, pour voir, de faire afficher le répertoire courant à l'exécution...Je pense que tu auras des surprises!


Message édité par gfive le 19-05-2004 à 14:24:52
Reply

Marsh Posté le 19-05-2004 à 14:24:35    

oui quand meme, je suis débutant mé quand meme...j'ai compris certains trucs

Reply

Marsh Posté le 19-05-2004 à 14:25:06    

scuse, edit!

Reply

Marsh Posté le 19-05-2004 à 14:26:33    

c bon, je pardonne mé plus sérieusement...y a une grosse bétise dans mon prog???

Reply

Marsh Posté le 19-05-2004 à 14:30:12    

non, justement, c'est pour ça que je pense plus à un problème à la con avec Eclipse.
 
Tu devrais peut être essayer de copier les classes ailleurs, et de le lancer à la main, pour voir.
 
Sinon, tu peux faire un tout petit peu plus "simple" :  
 

Code :
  1. public void LireTest (){
  2. try {
  3.    
  4.   FileReader file = new FileReader ("liste.txt" );
  5.   BufferedReader buff = new BufferedReader (file);
  6.   String line;
  7.   while ((line = buff.readLine()) != null) {
  8.     System.out.println(line);
  9.   }
  10.   buff.close();
  11.   file.close();
  12.    }
  13.     catch (IOException e){
  14.    
  15.     System.out.println("Erreur --" + e.toString());
  16.    }
  17.   }


 
(tu as oublié le file.close().)
 
Il me semble que le while (line = buf.readLine() != null) marche, mais bon.

Reply

Marsh Posté le 19-05-2004 à 14:47:58    

en mettant le close ca ne change rien
et j'ai essayé en mettant le chemin d'accès en entier  
 
FileReader file = new FileReader ("C:\Documents and Settings\Ju\Mes documents\Logiciels\eclipse\workspace\Increment1\espacededeveloppement\liste.txt" );  
 
 
java.lang.Error: Problème de compilation non résolu :  
 Séquence d'échappement non valide (les séquences valides sont  \b  \t  \n  \f  \r  \"  \'  \\ )
 
 at espacededeveloppement.Menu.LireTest(Menu.java:302)
 at espacededeveloppement.Menu.<init>(Menu.java:81)
 at espacededeveloppement.Main.main(Main.java:8)

Reply

Marsh Posté le 19-05-2004 à 14:49:27    

bah là, l'erreur vient du fait qu'il faut doubler les "\" dans les chaînes de caractères (\ est le caractère d'échappement, donc, il faut l'échapper lui même sinon, il n'apparaît pas)

Reply

Marsh Posté le 19-05-2004 à 14:49:27   

Reply

Marsh Posté le 19-05-2004 à 14:53:28    

Trop bien merci je savais pas!!!!
j'ai un peu honte merci beaucoup!
ca marche trop bien

Reply

Marsh Posté le 19-05-2004 à 14:55:45    

:D Faut pas avoir honte, hein! :p

Reply

Marsh Posté le 19-05-2004 à 15:05:08    

C'est encore moi...
Maintenant que j'arrive à lire dans le fichier ma liste...je souhaiterai que cette liste s'affiche dans le menu. c'est à dire que cette liste soit une liste de choix du menu...je ne sais pas trop comment faire le lien avce ma méthode de lecture et ma méthode de menu?

Reply

Marsh Posté le 19-05-2004 à 15:07:35    

dans la classe qui gère le menu, il doit y avoir une méthode qui permet d'ajouter un item de menu.
 
Donc, dans la méthode qui lit le fichier, dans la boucle qui lit ligne à ligne, tu appelles la méthode d'ajout.

Reply

Marsh Posté le 19-05-2004 à 15:10:10    

Le problème c'est que là ou je ne sais pas trop comment faire, je suppose que c'est une question de droits d'accès des méthodes:
 while ((line = buff.readLine()) != null) {  
   System.out.println(line);  
   menuTests.add(new JCheckBox());
   }  
  buff.close();  
  file.close();  
 
menuTest ne peut pas etre résolu

Reply

Marsh Posté le 19-05-2004 à 15:13:57    

ben il faut que la classe qui lit le fichier connaisse la variable menuTests : soit en faisant en sorte que menuTests soit un attribut de la classe, soit en le passant en paramètre à la méthode qui lit le fichier.

Reply

Marsh Posté le 19-05-2004 à 15:17:03    

Comme ca?
public void LireTest (){  
 try {  
 JMenu menuTests = new JMenu ("Test" );        
 FileReader file = new FileReader ("C:\\Documents and Settings\\Ju\\Mes documents\\Logiciels\\eclipse\\workspace\\Increment1\\espacededeveloppement\\liste.txt" );  
 BufferedReader buff = new BufferedReader (file);  
 String line;  
  while ((line = buff.readLine()) != null) {  
   System.out.println(line);  
   menuTests.add(line);
   }  
  buff.close();  
  file.close();  
    }  
  catch (IOException e){  
             
   System.out.println("Erreur --" + e.toString());  
   }  
}  
Excuse moi si je comprends pas tout, mais je débute vraiment..alors désolé si mes questions sont pas très pertinentes

Reply

Marsh Posté le 19-05-2004 à 15:22:08    

oui, par exemple.

Reply

Marsh Posté le 19-05-2004 à 15:27:20    

Je suis un peu perdue... en fait je ne sais plus ou mettre mes composants...
Je te montre :
 
 
 //Menu Test
 JMenu menuTests = new JMenu ("Test" );
 
 LireTest();
 barre.add(menuTests);
 
 
 
public void LireTest (){  
 try {  
 JMenu menuTests = new JMenu ("Test" );    
 JMenuBar barre=new JMenuBar();    
 FileReader file = new FileReader ("C:\\Documents and Settings\\Ju\\Mes documents\\Logiciels\\eclipse\\workspace\\Increment1\\espacededeveloppement\\liste.txt" );  
 BufferedReader buff = new BufferedReader (file);  
 String line;  
  while ((line = buff.readLine()) != null) {  
   System.out.println(line);  
   JMenuItem test = new JMenuItem (line);
   menuTests.add(test);
   barre.add(menuTests);
   }  
  buff.close();  
  file.close();  
    }  
  catch (IOException e){  
             
   System.out.println("Erreur --" + e.toString());  
   }  
}  

Reply

Marsh Posté le 19-05-2004 à 15:32:12    

bah, là, ca devrait marcher, mais je ne peux pas te dire si c'est la meilleure façon de faire : je ne connais pas la structure du reste du programme, ni rien! :)

Reply

Marsh Posté le 19-05-2004 à 15:34:49    

Mais ca ne marche pas...ce que je ne comprends pas c'est qu'il affiche le menu Test mais on dirait qu'il ne passe pas dans la méthode car il n'affiche pas de sous menu...

Reply

Marsh Posté le 19-05-2004 à 15:37:54    

Lorsque je ne mets plus dans la méthode menu:
 JMenu menuTests = new JMenu ("Test" );  
il est donc uniquement dans LireTest(), alors dans ma barre de Menu je n'ai plus "Test"
ca doit paraitre con, ce que je demande, mé je n'ai pas encore trop la logique java

Reply

Marsh Posté le 19-05-2004 à 15:42:45    

oups, oui, c'est normal!!
 
regarde :  

Code :
  1. //Là, tu instancies ton menu, très bien...
  2. JMenu menuTests = new JMenu ("Test" );
  3. // Tu lis le fichier  
  4. LireTest();
  5. // Et tu ajoutes le menu...
  6. barre.add(menuTests);
  7. Jusques là, je suis d'acord,
  8. public void LireTest (){ 
  9. try
  10.   // Là, ça ne va pas : tu réinstancies un objet JMenu, qui a le nom menuTests, et qui n'est visible que dans la méthode LireTest
  11. JMenu menuTests = new JMenu ("Test" );   
  12.   ...
  13. }


 
Solution : soit, tout ce code est dans la même classe, et le menu est un attribut de la classe => tu peux enlever la ligne JMenu menuTests = new JMenu ("Test" ); et aussi ce qui concerne la barre de menu, de la méthode LireTests.
 
Soit, tu fait :  

Code :
  1. //Menu Test
  2. JMenu menuTests = new JMenu ("Test" );
  3. LireTest();
  4. barre.add(menuTests);
  5. public void LireTest (JMenu menuTests){ 
  6. try
  7.    FileReader file = new FileReader ("C:\\Documents and Settings\\Ju\\Mes documents\\Logiciels\\eclipse\\workspace\\Increment1\\espacededeveloppement\\liste.txt" ); 
  8. BufferedReader buff = new BufferedReader (file); 
  9. String line; 
  10.   while ((line = buff.readLine()) != null) { 
  11.    System.out.println(line); 
  12.    JMenuItem test = new JMenuItem (line);
  13.    menuTests.add(test);
  14.    } 
  15.   buff.close(); 
  16.   file.close(); 
  17.     } 
  18.   catch (IOException e){ 
  19.            
  20.    System.out.println("Erreur --" + e.toString()); 
  21.    } 
  22. }


 
Sinon, autre chose : les conventions de codage Java couramment admises veulent que seuls les noms de classe et les noms de constantes commencent par des majuscules : pas les noms de méthodes.

Reply

Marsh Posté le 19-05-2004 à 15:47:01    

C'est trop gentil
merci beaucoup pour ta patiente avce une malheureuse débutante et tes explications claires!!!!!
je suis trop contente, ca marche nickel!!!!

Reply

Marsh Posté le 19-05-2004 à 15:51:20    

:D De rien, j'ai rien d'intéressant à faire, aujourd'hui! :p
Veille de week end de 4 jours, tu parles! :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed