base de données et enregistrement [java] - Java - Programmation
Marsh Posté le 26-05-2004 à 10:02:33
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...
Marsh Posté le 26-05-2004 à 10:04:32
je vois...j'ai oublié de préciser que je ss débutante
comment faire????
Marsh Posté le 26-05-2004 à 10:09:32
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.
Marsh Posté le 26-05-2004 à 10:14:01
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
Marsh Posté le 26-05-2004 à 10:17:28
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?????
Marsh Posté le 26-05-2004 à 10:22:52
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
Marsh Posté le 26-05-2004 à 10:24:46
ju972 a écrit : en fait mon application aura une option qui permettra a l'utilisateur de rajouter des noms de tests avec ces options... |
c'est à dire ? tu veux rajouter des données dans ton fichier au même format ?
Marsh Posté le 26-05-2004 à 10:26:58
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
Marsh Posté le 26-05-2004 à 10:31:45
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
Marsh Posté le 26-05-2004 à 10:36:36
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]
Marsh Posté le 26-05-2004 à 10:41:33
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
Marsh Posté le 26-05-2004 à 10:42:50
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???
Marsh Posté le 26-05-2004 à 10:45:56
Oui StringTokenizer c'est bien
Marsh Posté le 26-05-2004 à 10:47:18
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
Marsh Posté le 26-05-2004 à 10:48:48
Et bien commence a faire les méthodes pour lire ton fichier, aprés on verra l'écriture
Marsh Posté le 26-05-2004 à 11:53:40
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.
Marsh Posté le 26-05-2004 à 09:50:00
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 :
j'ai cependant une erreur :
Erreur --java.io.StreamCorruptedException: invalid stream header