Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1475 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java] base de données et enregistrement

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] base de données et enregistrement

n°739067
ju972
Posté le 26-05-2004 à 09:50:00  profilanswer
 

Bonjour, je lis un fichier texte se composant de la façon suivante:
 
Posner oui stimulus
Stroop oui stimulus
Stroop oui stimulus
Prédic oui stimulus
Earth non globale
 
il s'agit en fait d'une base de données.
je souhaite lire pour chaque nom (1° champ) si le deuxième champ est oui ou non et afficher dans mon menu les noms et en fonction de la réponse du deuxième champ (oui ou non) ouvrir une boite de dialogue...
je considère que chaque ligne est un enregistrement :
 

Code :
  1. public void lectureTest (JMenu menuTests)
  2. {
  3.   LireTests liste;
  4.  try{
  5.  entree = new ObjectInputStream (
  6.  new FileInputStream ("C:\\Documents and Settings\\Ju\\Mes documents\\Logiciels\\eclipse\\workspace\\Developpement\\increment1\\liste.txt" )); 
  7.   liste = (LireTests) entree.readObject();
  8. String valeurs[] = {liste.getNoms(),liste.getStim(),liste.getNorm()};
  9.  //while (valeurs != null) {   
  10.  System.out.println(liste.getNoms()); 
  11.  JMenuItem test = new JMenuItem (liste.getNoms());
  12.  menuTests.add(test);
  13.   //}
  14.  entree.close();
  15. }
  16.  catch (EOFException endOfFileException){
  17.  System.out.println("Erreur --" + endOfFileException.toString());
  18.   }
  19.  catch (ClassNotFoundException classNotFoundException){
  20.  System.out.println("Erreur --" + classNotFoundException.toString());
  21.   }
  22.  catch (IOException e) {
  23.  System.out.println("Erreur --" + e.toString());
  24.  }
  25. }
  26. public class LireTests implements Serializable {
  27. private String nom;
  28. private String stimulus;
  29. private String norme;
  30. public LireTests()
  31. {
  32.  this ("","","" );
  33. }
  34. public LireTests(String noms, String stim, String normes)
  35. {
  36.  setNoms(noms);
  37.  setStim(stim);
  38.  setNorm(normes);
  39. }
  40. public void setNoms (String noms)
  41. {
  42.  nom=noms;
  43. }
  44. public String getNoms()
  45. {
  46.  return nom;
  47. }
  48. public void setStim (String stim)
  49. {
  50.  stimulus=stim;
  51. }


 
j'ai cependant une erreur :
Erreur --java.io.StreamCorruptedException: invalid stream header

mood
Publicité
Posté le 26-05-2004 à 09:50:00  profilanswer
 

n°739112
nerisson
Pic-pic
Posté le 26-05-2004 à 10:02:33  profilanswer
 

Euh ce n'est pas comme ca que l'on lis un fichier texte hein.
La tu essaye de lire un fichier texte en faisant comme si tu lisais un objet serialisé, ca n'a rien a voir...


Message édité par nerisson le 26-05-2004 à 10:02:54

---------------
Light is right
n°739115
ju972
Posté le 26-05-2004 à 10:04:32  profilanswer
 

je vois...j'ai oublié de préciser que je ss débutante
comment faire????

n°739131
nerisson
Pic-pic
Posté le 26-05-2004 à 10:09:32  profilanswer
 

Bah en commencant par une bonne lecture  :(  
http://java.sun.com/docs/books/tut [...] index.html
et plus précisement
http://java.sun.com/docs/books/tut [...] reams.html
 
En gros tu vas lire ton fichier ligne par ligne, décomposer les champs suivant ton séparateur de colonnes, et puis faire ton traitement en consequence.


---------------
Light is right
n°739137
ju972
Posté le 26-05-2004 à 10:10:27  profilanswer
 

ok merci bcp de m'avoir aiguillé, j'etais un peu perdue

n°739151
nerisson
Pic-pic
Posté le 26-05-2004 à 10:14:01  profilanswer
 

Mais bon, si tu ne comptes pas modifier des fichiers texte a la main tu peut tres bien utiliser la serialisation comme méthode de sauvegarde aussi  ;)


---------------
Light is right
n°739160
ju972
Posté le 26-05-2004 à 10:17:28  profilanswer
 

en fait mon application aura une option qui permettra a l'utilisateur de rajouter des noms de tests avec ces options...
que dois je fairE?????

n°739175
nerisson
Pic-pic
Posté le 26-05-2004 à 10:22:52  profilanswer
 

Bah comme tu veux  :)  
Tu as 2 solutions:
 - soit tu sauvegardes tes données dans un fichier texte, avec un format spécifique. L'avantage c'est que tu pourra lire et modifier ce fichier facilement. L'inconvenient c'est que tu as un peu plus travail a faire en Java pour lire et écrire ce fichier.
 - soit tu utilises la sérialisation Java. L'avantage c'est que c'est super simple a écrire en Java. L'inconvenient c'est tu ne pourra plus lire ni modifier ton fichier a la main, et que tu ne pourra non plus changer la définition des objets que tu as sérialiser


---------------
Light is right
n°739182
benou
Posté le 26-05-2004 à 10:24:46  profilanswer
 

ju972 a écrit :

en fait mon application aura une option qui permettra a l'utilisateur de rajouter des noms de tests avec ces options...
que dois je fairE?????


c'est à dire ? tu veux rajouter des données dans ton fichier au même format ?

n°739185
ju972
Posté le 26-05-2004 à 10:26:58  profilanswer
 

oui exactement
un option e mon logiciel va permettre a l'utilisateur d'ajouter ou modifier un test donc changer ou ajouter des données

mood
Publicité
Posté le 26-05-2004 à 10:26:58  profilanswer
 

n°739199
benou
Posté le 26-05-2004 à 10:31:45  profilanswer
 

donc il faut juste que tu codes une méthode permettant de sauvegarder les données que tu as en mémoire.
 
Si tu lis les fichier dans un certain format, la logique voudrait que tu les recopies dans ce même format => oublie la sérialisation.
 
C'est où que tu bloques ? parce que l'écriture de fichier en java n'est pas très compliquée... Tu créées un FileWriter et tu fais des write() de chaine de caractère dessus ... http://java.sun.com/j2se/1.4.2/doc [...] riter.html


Message édité par benou le 26-05-2004 à 10:34:48
n°739212
ju972
Posté le 26-05-2004 à 10:36:36  profilanswer
 

Alors là du coup je suis complètement perdue...je ne sais plus quelle méthode utiliser
le problème n'ets pas de lire le fichier n'y meme d'afficher ce qu'il contient car au début j'avais seulement un parmaètre dans mon fichier: le nom et je l'affichais dans mon menu ett c'etait nickel, ce qui me perturbe c'est davoir maintenant 3 champs par ligne...
je te montre ce que j'avais fait avce juste le nom
[cpp]public void lireTest (JMenu menuTests){    
//   Attraper l'exception IOException
  try {  
     
//   Création d'une nouvelle classe FileReader appelée file et permet de lire la liste des tests
     FileReader file = new FileReader ("C:\\Documents and Settings\\Ju\\Mes documents\\Logiciels\\eclipse\\workspace\\Developpement\\increment1\\liste.txt" );    
//   Création d'un flux de caractères à tampon associé à l'objet FileReader  
     BufferedReader buff = new BufferedReader (file);    
     String line;  
     
//   Lecture du fichier ligne par ligne. Cette boucle se termine quand la méthode retourne la valeur null.
 
   while ((line = buff.readLine()) != null) {    
      System.out.println(line);    
      JMenuItem test = new JMenuItem (line);  
      menuTests.add(test);
      test.addActionListener(
        new ActionListener(){
         public void actionPerformed(ActionEvent e)
          {
           choixAnalyse();
          }
        }
       );
       
   }
   
//   Fermeture du fichier et du buffer.  
   buff.close();    
   file.close();    
   
   }
    catch (IOException e){    
//Erreur de lecture de fichier                    
    System.out.println("Erreur --" + e.toString());    
     }    
   }    
[\cpp]

n°739214
ju972
Posté le 26-05-2004 à 10:37:01  profilanswer
 

oups excuse moi j'ai merdé sur la balise de code

n°739225
nerisson
Pic-pic
Posté le 26-05-2004 à 10:41:33  profilanswer
 

Bah c'etait bien ce que tu vaait fait !  :)  
Mais maintenant ta variable line ne contient plus uniquement le nom mais tout la ligne de ton fichier. Il suffit de decomposer cette ligne en fonction de ton separateur


---------------
Light is right
n°739232
ju972
Posté le 26-05-2004 à 10:42:50  profilanswer
 

donc j'utilise le StringTokenizer????
et je pourrais récupérer le premier token pour travailler dessus et le deuxième token pour faire autre chose?
et est ce que je pourrais y ajouter des nouvelles lignes à cette liste???

n°739238
nerisson
Pic-pic
Posté le 26-05-2004 à 10:45:56  profilanswer
 

Oui StringTokenizer c'est bien


---------------
Light is right
n°739243
ju972
Posté le 26-05-2004 à 10:47:18  profilanswer
 

bien , je vais essayer, mais ce que je n'ai tjs pas compris c'est est ce que qd l'utilisateur voudra ajouter un nom, si avec cette méthode (sans utiliser les objets) je pourrais ajouter les 3 champs à la liste  
désolé si je comprends pas vite, mé je ss archie débutante

n°739250
nerisson
Pic-pic
Posté le 26-05-2004 à 10:48:48  profilanswer
 

Et bien commence a faire les méthodes pour lire ton fichier, aprés on verra l'écriture  :)


---------------
Light is right
n°739254
ju972
Posté le 26-05-2004 à 10:49:20  profilanswer
 

Ok merci beaucoup alors
je me lance  
merci merci

n°739546
benou
Posté le 26-05-2004 à 11:53:40  profilanswer
 

ouais : la lecture et l'ecriture se font séparément. Exemple : quand tu utilises word tu ouvres ton document, tu fais des modifications, et ensuiite tu sauvegardes. Ben là c'est pareil.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java] base de données et enregistrement

 

Sujets relatifs
[Java 1.5] Probleme avec les types generiquestubes en java
Migration d'une base de donnée ACCESS vers Oraclelimitation du nombre d'enregistrement avec un retrieve
passer d'une base a une autrejava 3D
[java] [Débutante]JinternalFrame et JOptionPanestockage des données dans un fichier XML en C++
awk et base de donnée[c] enregistrement des noms des fichiers dans un tableau
Plus de sujets relatifs à : [java] base de données et enregistrement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR