Comment enregistrer une collection dans un fichier properties ?

Résolu
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009 - 12 févr. 2006 à 03:13
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre 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
===================================

8 réponses

bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
12 févr. 2006 à 12:58
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();
}
3
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
12 févr. 2006 à 03:54
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
===================================
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
12 févr. 2006 à 13:32
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 ;-)

++
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
12 févr. 2006 à 13:33
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 ;-)

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
12 févr. 2006 à 15:06
[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
0
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
12 févr. 2006 à 20:07
no soucy :)

Bon dev :)

++
0
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
12 févr. 2006 à 20:59
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
===================================
0
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
12 févr. 2006 à 21:43
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
===================================
0