Comment enregistrer une collection dans un fichier properties ? [Résolu]

Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Dernière intervention
31 août 2009
- 12 févr. 2006 à 03:13 - Dernière réponse :
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Dernière intervention
31 août 2009
- 12 févr. 2006 à 21:43
Bonjour,



J'ai une collection de parametres (Parameters.list), je voudrai pouvoir
l'enregistrer dans un fichier properties, voila ce que j'ai fait pour
l'instant :

public static void save(String file){



//On fait pointer notre Properties sur le fichier

Properties properties = new Properties() ;



// On ajoute true pour dire d'utilieré la methode append

FileOutputStream fos = new FileOutputStream(file,true);



// On enregistre notre collection de parametres

for(Object object : Parameters.list){

properties.setProperty(object,object.toString());

}



}



message d'erreur sur 'setProperty'

The method setProperty(String, String) in the type Properties is not applicable for the

arguments (Object, String)



J'ai compris d'ou viens le problème object doit etre converti en
string, ce que je voudrai c pouvoir avoir le nom de cette variable
(object.name serait logique mais ça n'existe pas)



Comment faire d'apres vous ?



merci pour votre aide

===================================
RANOUF
===================================
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Dernière intervention
29 janvier 2008
- 12 févr. 2006 à 12:58
3
Merci
salut
comme solution à ton probleme tu peut utiliser la serialisation

/*Si tu utilise une arrayList par exemple, cette classe est directement serialisable sinon si c'est une classe à toi il faut l'implementé serialisable : ex : Public maClasse implements Serializable*/
try
{
ObjectOutputStream sortie = new ObjectOutputStream(new FileOutputStream(System.getProperty("user.dir") + "monFichier"));
//on enregistre l'objet dans le fichier => dans ce cas ta collection
sortie.writeObject(monObjCollection);
}
catch(Exception e){
System.out.println(e.getMessage()+" probleme sur le fichier :(");
}

Pour relire dans l'autre sens
try { //on ouvre le fichier
ObjectInputStream entree = new ObjectInputStream(new FileInputStream(System.getProperty("user.dir") + "monFichier"));
Collection maCollection = (Collection)entree.readObject();
}

Merci bernie666 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de bernie666
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Dernière intervention
31 août 2009
- 12 févr. 2006 à 03:54
0
Merci
ce qui serait encore mieux c'est de lui faire passer carrément la
collection et qu'il l'enregistre tout seul comme un grand, je crois que
ça existe il faut juste trouver ou .... ou sinon obtenir la réponse ici
:)

===================================
RANOUF
===================================
Commenter la réponse de ranouf
Messages postés
2837
Date d'inscription
lundi 11 août 2003
Dernière intervention
16 décembre 2006
- 12 févr. 2006 à 13:32
0
Merci
Salut,
A ce que je comprend tu veux enregistrer des chaine/obejts et non des chaine/chaine c ça ?

Pour fenregistrer des chaine/chaine, un conseil n'utilise pas la sérialsiation pour faire cela. La classe Properties fait cela très bien ! Voici un exemple d'une source faisant la lecture :
http://www.javafr.com/code.aspx?ID=15671
Pour l'écriture utilise la méthode store(), pour cela il suffti de regarder la javadoc :http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html

Concernant ton prob à l'origine, il faut que tes deux parmas soit des string et non des objets.

Ensuite comme le dis bernie, pour enregistrer des objets, le mécanisme à utilsier est la sérialisation ...

Maintenant que tu as toutes les réposnes, tu n'as plus qu'à chercher un peu sur le net pour pouvoir solutionner ton prob ;-)

++
Commenter la réponse de cs_neodante
Messages postés
2837
Date d'inscription
lundi 11 août 2003
Dernière intervention
16 décembre 2006
- 12 févr. 2006 à 13:33
0
Merci
Arf une dernière chose, sérialise juste ta List pour enregistrer tous tes objets, juste au cas où tu n'aurais pas deviner qu'il fallait faire comme ça ;-)

++
Commenter la réponse de cs_neodante
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Dernière intervention
31 août 2009
- 12 févr. 2006 à 15:06
0
Merci
[auteurdetail.aspx?ID= 173141 bernie666]> c tout à fait ce que je cherchais ! merci



[auteurdetail.aspx?ID=148258 neodante]> merci pour ton aide ,
pour t'expliquer un peu mieu mon probleme, j'ai un série de paramètre
(de type Int, bool, User (classe que j'ai crée), ...) tout ces valeurs
par défaut sont écris dans ma classe, parameters, cependant, ces valeur
peuvent être changer et dans ce cas là, j'ai besoin d'enregistrer ces
changements dans un fichier properties, la solution de bernie666
correspond tout à fait à ma demande, je passe ma collection, la
fonction l'enregistre puis est capable de la récupérer parfait !





Merci à vous deux pour cette réponse si rapide ++

RANOUF
Commenter la réponse de ranouf
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Dernière intervention
29 janvier 2008
- 12 févr. 2006 à 20:07
0
Merci
no soucy :)

Bon dev :)

++
Commenter la réponse de bernie666
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Dernière intervention
31 août 2009
- 12 févr. 2006 à 20:59
0
Merci
petit probleme :

public static void load(String file){



try{

// On crée la sortie vers le fichier


ObjectOutputStream in = new ObjectOutputStream(new
FileOutputStream(System.getProperty("user.dir") + "\" + file));

//on charge la liste dans le fichier

Parameters.list = in.readObject();<==== BUG


System.out.println(System.getProperty("user.dir") + "\" + file + "
chargé");

} catch (FileNotFoundException e) {

e.printStackTrace();



} catch (IOException e) {

e.printStackTrace();



}

//Properties properties = new Properties();

//properties.save(new FileInputStream("parameters"));



}
BUG = The method readObject() is undefined for the type ObjectOutputStream





readobject existe plus on dirait, vous avez une idée sur ce que je pourrai faire ?


===================================
RANOUF
===================================
Commenter la réponse de ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Dernière intervention
31 août 2009
- 12 févr. 2006 à 21:43
0
Merci
J'ai trouvé la solution :





public static void save(String file){



try{

// On crée la sortie vers le fichier


ObjectOutputStream out = new ObjectOutputStream(new
FileOutputStream(System.getProperty("user.dir") + "\" + file));

//on enregistre laliste dans le fichier

out.writeObject(Parameters.list);


System.out.println(System.getProperty("user.dir") + "\" + file + "
saved");

} catch (FileNotFoundException e) {

e.printStackTrace();



} catch (IOException e) {

e.printStackTrace();



}

//Properties properties = new Properties();

//properties.save(new FileInputStream("parameters"));



}



public static void load(String file){



try{

// crée le fichier


FileInputStream fichier = new
FileInputStream(System.getProperty("user.dir") + "\" + file);

// On crée l'entrée à partir du fichier

ObjectInputStream ois = new ObjectInputStream(fichier);

// On charge la liste à partir du fichier

Parameters.list = (ArrayList) ois.readObject();




System.out.println(System.getProperty("user.dir") + "\" + file + "
chargé");

} catch (FileNotFoundException e) {

e.printStackTrace();



} catch (IOException e) {

e.printStackTrace();



} catch (ClassNotFoundException e) {

e.printStackTrace();



}

}

===================================
RANOUF
===================================
Commenter la réponse de ranouf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.