[JAVA] Lecture de fichier

Lecture de fichier [JAVA] - Java - Programmation

Marsh Posté le 09-11-2004 à 11:07:24    

Hello
Je dois lire, très rapidement, un fichier en java. Ce fichier comporte par exemple 3 colonnes, séparées par des tabulations, chaque colonne contenant une valeur. J'aimerais pouvoir lire ce fichier et le charger dans un tableau. Par exemple un tableau en 4dimension:
tab[ligne][val_col1][val_col2][val_col3]
Qqn sait-il comment je peux faire cela de manière facile et rapide?
D'avance merci

Reply

Marsh Posté le 09-11-2004 à 11:07:24   

Reply

Marsh Posté le 09-11-2004 à 11:31:30    

FileInputStream est ton ami.

Reply

Marsh Posté le 09-11-2004 à 11:48:50    

ouais bah, FileReader, déjà, plutot.

Reply

Marsh Posté le 09-11-2004 à 11:51:46    

+1 avec -- et avec un BufferedReader  


---------------
IVG en france
Reply

Marsh Posté le 09-11-2004 à 12:12:46    

(et euh, ça serait pas plutot un tableau à 2 dimensions qu'il nous fait là ? [:itm])

Reply

Marsh Posté le 09-11-2004 à 14:17:18    

BufferedReader  in = new BufferedReader(new FileReader("file.txt" ));
String line;
String[] temp;
int index=0;
while ((line=in.readLine()) != null){  
        temp=line.split("\\t" );        
        for (int i=0; i<temp.length; i++){
            v[index++]=temp[i]);
        }
}  
in.close();

 
J'ai pas trouvé plus simple

Reply

Marsh Posté le 09-11-2004 à 14:28:20    

Ton tableau v, il fait quelle taille ?
Il faut passer par une List quelconque plutot.

Reply

Marsh Posté le 09-11-2004 à 14:34:07    

Oui. C'est un exemple de base que j'ai montré.
Le problème ensuite, c'est celui-ci: http://forum.hardware.fr/hardwaref [...] 9823-1.htm
Merci

Reply

Marsh Posté le 07-01-2005 à 14:27:57    

korben a écrit :

BufferedReader  in = new BufferedReader(new FileReader("file.txt" ));
String line;
String[] temp;
int index=0;
while ((line=in.readLine()) != null){  
        temp=line.split("\\t" );        
        for (int i=0; i<temp.length; i++){
            v[index++]=temp[i]);
        }
}  
in.close();

 
J'ai pas trouvé plus simple


 
J'utilise ta méthode pour lire mon fichier, j'ai fait une méthode, je dois juste lire une ligne
 

Code :
  1. //Permet de lire le solde de la caisse dans le fichier fond.txt     
  2.   public double lireFond() throws IOException
  3.      {
  4.       String ligne;
  5.      
  6.    
  7.       BufferedReader entree = new BufferedReader(new FileReader("fond.txt" ));
  8.       ligne = entree.readLine();
  9.      
  10.       if(ligne != null)
  11.         return Double.parseDouble(ligne);
  12.       else
  13.         return 0;
  14.    
  15.      }


 
Le truc c'est que lorsque je veux utiliser cette méthode, j'ai un beau

Citation :

unreported exception java.io.IOException; must be caught or declarad to be thrown


 
???
 
merci


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 07-01-2005 à 16:50:08    

Il faut que tu traites l'exception dans les méthodes appelantes aussi.

Reply

Marsh Posté le 07-01-2005 à 16:50:08   

Reply

Marsh Posté le 07-01-2005 à 17:19:46    

Glod 2 a écrit :

Il faut que tu traites l'exception dans les méthodes appelantes aussi.


merci, c'était bien ca :jap:


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 08-01-2005 à 11:28:48    

J'ai encore un fameux problemes avec les fichiers :S C'est vrai que pour le java, je me suis fort basé sur mon bouquin
 
J'ai donc une classe contenant l'interface graphique, avec boutons et etc, je crée un bouton de cette manière
 

Code :
  1. //Boutton enregistrer
  2.        enregistrerB = new JButton("Enregistrer" );
  3.        contenu.add(enregistrerB);
  4.        EcouteBouton ecout3 = new EcouteBouton(3);
  5.        enregistrerB.addActionListener(ecout3);


 
le numero, 3 ici, va me permettre d'identifier le bouton dans ma classe  
 

Code :
  1. class EcouteBouton implements ActionListener
  2.   {
  3.    public EcouteBouton(int n)
  4.    {this.n=n;}
  5.  
  6.  
  7.    public void actionPerformed (ActionEvent ev)
  8.      {
  9.       System.out.println("Action Bouton "+ n);
  10.      
  11.       //On connait le bouton sur lequel on a cliqué
  12.      
  13.       switch(n)
  14.       {
  15.        //Bouton Exit
  16.        case 4 : System.exit(0); break;
  17.      
  18.        //Enregistrement
  19.        case 3 :    operation tmp;
  20.                  tmp = new operation(factureT.getText(),dateT.getText(),designationT.getText(),typeC.getSelectedIndex(),paiementC.getSelectedIndex(),Double.parseDouble(montantT.getText()));
  21.                  vecOp.ajout(tmp);
  22.                  soldeL.setText("                                      En ce moment dans la caisse, il y a : "+vecOp.getTotalCaisse()+" Euro" );             
  23.                
  24.                
  25.                
  26.                
  27.                  recDep.setText("Les recettes sont de : "+vecOp.totalRecette()+"           Les depenses sont de : "+vecOp.totalDepense());
  28.                  mouvJour.setText("Mouvement du jour : "+vecOp.mouvJour());
  29.                  vecOp.enregistrerFichier();
  30. clear();
  31.                  break;                       }
  32.      
  33.      
  34.      
  35.    
  36.    
  37.       }
  38.       private int n;
  39.  
  40.  
  41.     }
  42.  
  43.    
  44. }


Grace à ces numeros, je sais sur quel bouton j'ai cliqué, et a partir de la, je crée mes objets, et j'utilise leur méthode.
 
Le probleme c'est que dans le case 3, j'ai cette méthode   vecOp.enregistrerFichier(); qui fait donc un enregistrement fichier. lorsque je compile j'ai constament cette erreur
 

Code :
  1. unreported exception java.io.IOException; must be caught or declarad to be thrown


 
Alors je me suis dit que si je déclarrais ma classe

Code :
  1. class EcouteBouton implements ActionListener


 
comme ceci
 

Code :
  1. class EcouteBouton implements ActionListener throws IOException


 
que ce allait marcher, mais non, là il me demande des {} qui n'ont rien avoir dans l'histoire.
 
je suis un peu perdu là
 
un grand merci


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 08-01-2005 à 11:36:57    

Et si je fais ca

Code :
  1. public void actionPerformed (ActionEvent ev) throws IOException


 
ce qui est bcp plus logique, j'ai ca comme erreur

Citation :

actionPerformed(java.awt.event.ActionEvent)in EsiFrame.EcouteBouton cannot implement actionPerformed(java.awt.event.ActionEvent)in java.awt.event.ActionListener; overridden method doers not throw java.IOException


 
C'est vraiment le dernier probleme que j'ai, apres je pourrais finir ce projet :S
 
merci


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 08-01-2005 à 11:52:44    

faudrait vraiment que tu te documentes sur les exceptions et la bonne façon de les gérer ...
La bonne question à se poser c'est "qu'est ce que tu fais si y a une exception qui se produit pendant l'enregistrement de ton fichier ?"
 
là dans le cas 3 il faut que tu entoures les méthodes succeptibles de cracher la IOException d'un bloc try, suivit d'un bloc catch(IOException) qui contient ce qu'il y a à faire dans le cas d'une erreur pdt l'écriture du fichier.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2005 à 11:58:27    

oui je sais :S je fais le boolay, mais je suis vraiment à le bourre... j'ai commencé le java y a deux jours, avec que mon livre comme cours.
 
Donc avec, ce que tu vois de me dire, il serait logique de faire ceci
 

Code :
  1. try{
  2.          File monFichier =new File("operations.txt" );
  3.      monFichier.createNewFile();
  4.     }
  5.  catch (IOException e)
  6.      {
  7.      System.out.println("erreur dans: " + e);
  8.      }


 
Ce qui resoudrait mon probleme ;)
 
je vais tester
 
merci


Message édité par Le Veilleur le 08-01-2005 à 11:58:38

---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 08-01-2005 à 12:42:21    

faut que tu mettes dans le try ce qui peut générer l'exception que tu veux traiter [:spamafote]
 
le méchanisme d'exception est fait pour s'assurer qu'un programme ne va pas planter à cause d'un comportement innatendu. => ton prog ne compile pas si tu ne "gères" pas correctement ces comportements innatendus. Ca t'oblige à les gérer.
 
Après y a ceux qui faont des "catch(Exception e) {}" pour que le compilo arrpete de gueuler mais bon, là on peut se dire qu'il cherchent vraiment à avoir un programme pas stable ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 12-01-2005 à 14:10:09    

De manière globale et simplifiée, il y a 2 manières de gérer les exceptions:
1) Tu renvoies l'erreur plus loin, à celui qui a appelé ta méthode (throws exception)
2) Tu la traites directement dans ta méthode, avec un try/catch.
 
Mais effectivement, dans les 2 cas, il faut savoir ce que tu risques d'avoir comme erreur et donc savoir si cela vaut la peine de faire qqch de très propre, traitant les exceptions, ou si un simple message d'erreur suffit.

Reply

Marsh Posté le 12-01-2005 à 14:33:31    

benou a écrit :

faudrait vraiment que tu te documentes sur les exceptions et la bonne façon de les gérer ...


on va meme commencer par "ce qu'est une exception" et "un poil de syntaxe java pour bien débuter", parce que une clause throws sur une declaration de classe, c'est pas gagné :sweat:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

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