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

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

8 réponses

Répondre au sujet
bernie666 427 Messages postés mercredi 1 octobre 2003Date d'inscription 29 janvier 2008 Dernière intervention - 12 févr. 2006 à 12:58
+3
Utile
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();
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de bernie666
ranouf 237 Messages postés mercredi 18 décembre 2002Date d'inscription 31 août 2009 Dernière intervention - 12 févr. 2006 à 03:54
0
Utile
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
cs_neodante 2837 Messages postés lundi 11 août 2003Date d'inscription 16 décembre 2006 Dernière intervention - 12 févr. 2006 à 13:32
0
Utile
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
cs_neodante 2837 Messages postés lundi 11 août 2003Date d'inscription 16 décembre 2006 Dernière intervention - 12 févr. 2006 à 13:33
0
Utile
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
ranouf 237 Messages postés mercredi 18 décembre 2002Date d'inscription 31 août 2009 Dernière intervention - 12 févr. 2006 à 15:06
0
Utile
[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
bernie666 427 Messages postés mercredi 1 octobre 2003Date d'inscription 29 janvier 2008 Dernière intervention - 12 févr. 2006 à 20:07
0
Utile
no soucy :)

Bon dev :)

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