[JAVA]Properties|FileOutputStr eam|FileWriter : pb écriture flux ->text

Properties|FileOutputStr eam|FileWriter : pb écriture flux ->text [JAVA] - Java - Programmation

Marsh Posté le 09-10-2002 à 10:11:20    

Bonjour,
j'utilise actuellement la classe Properties pour écrire des données dans un fichier (clé=valeur). Ce que je dois écrire est du texte.
La méthode de la classe Properties pour écrire est public void store(OutputStream out, String header) throws IOException
Lorsque j'utilise FileOutputStream fileOut = new FileOutputStream(monfile); ce sont des flux binaires et non du texte.
Résultat : si j'écris ":", ca écrit "\:" dans mon fichier.
Il existe FileWriter mais dans ce cas la, je ne peux pas utiliser la méthode store et donc la classe Properties
Existe-il qqchose permettant de résoudre mon problème pour écrire du texte dans la classe Properties ?
Merci  :)

Reply

Marsh Posté le 09-10-2002 à 10:11:20   

Reply

Marsh Posté le 09-10-2002 à 10:14:26    

:heink: qu'est ce que tu racontes ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 09-10-2002 à 10:15:43    

faut lire la javadoc hein !!
 
Writes this property list (key and element pairs) in this Properties table to the output stream in a format suitable for loading into a Properties table using the load method.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 09-10-2002 à 10:17:06    

bon j'ai du code qui fonctionne. Regarde si tu fais pareil
 
http://cvs.sourceforge.net/cgi-bin [...] cvs-markup


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 09-10-2002 à 10:20:51    

Je suis pas sure qu'utiliser un FileWriter t'aide beaucoup :
 

Citation :

The key and value characters #, !, =, and : are written with a preceding slash to ensure that they are properly loaded.


 
dixit la JavaDoc de Properties.store. En gros, tu peux pas lutter contre le \:, c'est fait exprès. Essaie peut-être d'utiliser la méthode list(PrintWriter out) avec ton FileWriter en le castant en tant que Writer (PrintWriter hérite de Writer)...

Reply

Marsh Posté le 09-10-2002 à 10:29:42    

si il veut storer dans un fichier texte un truc du genre clé=valeur il ne doit pas utiliser cette méthode c'est tout !!!
Tu peux faire en 30 sec une méthode qui fait pareil avec un FileWriter hein !!
 
tu fais  

Code :
  1. // writer init
  2. Enumeration keys = props.propertyNames();
  3. while (keys.hasMoreElements()) {
  4.     String key = (String) keys.nextElement();
  5.     String value = props.get(key);
  6.     writer.writeln(key+"="+value);
  7. }
  8. // writer close et le reste


Message édité par darklord le 09-10-2002 à 10:30:30

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 09-10-2002 à 11:00:46    

Ok merci pour ces renseignements ! :jap:  

Reply

Marsh Posté le 09-10-2002 à 12:34:18    

Bon excusez moi encore, je vais essayer d'exposer mon problème global plus clairement.
Certes ce n'est pas courant mais je dois manipuler des fichiers .INI en java et la classe Properties ne convient donc pas. Quand on load un .INI avec Properties.load, c la cata avec les lignes du style TMPPATH=c:\temp -> en effet il modifie tout ca en mémoire car il considere le \t comme tabulation par exemple...et ca donne TMPPATH=f: emp  
Ou si TMPPATH=c:\rep -> si le \ est pas doublé \\ il le reconnait pas.
Les sections [section] il ne les connait donc pas ...Et quand il veut faire un store ...   :gun:  
 
La question serait donc existe-il un outil pour manipuler les .INI style windows en Java ou faut-il tout réécrire (méthodes load, get, set, store, ...) ?  
Je remercie d'avance ceux qui prennent de leur temps pour m'aider. :jap:

Reply

Marsh Posté le 09-10-2002 à 12:57:16    

A mon avis, il vaut mieux réécrire les fonctions de lecture et d'écriture proprement. D'autant que la classe Properties elle-même ne connait pas la notion de section qu'on trouve dans les fichiers ".INI", donc il faut carrément réécrire une classe qui gère ça.
 
Si tu as la chance de travailler avec le JDK 1.4, par contre, tu dois pouvoir réutiliser la classe java.util.prefs.Preferences, qui ressemble assez à la base de registre de Windows (c'est la généralisation des fichiers .INI, avec en particulier la notion de hiérarchie de sections) : tu n'auras plus alors qu'à écrire les fonctions d'import/export.

Reply

Marsh Posté le 09-10-2002 à 13:49:52    

à ta place j'aurai précisé tout ca encore plus tard prince2lu  :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 09-10-2002 à 13:49:52   

Reply

Marsh Posté le 09-10-2002 à 14:23:40    

Désolé DarkLord, ct ma première question sur ce forum.
J'étais un peu timide au début. Mais je le referais plus, j'exposerai plus clairement la prochaine fois.  ;)

Reply

Marsh Posté le 09-10-2002 à 16:17:25    

Prince2Lu a écrit a écrit :

Désolé DarkLord, ct ma première question sur ce forum.
J'étais un peu timide au début. Mais je le referais plus, j'exposerai plus clairement la prochaine fois.  ;)




 
 :)  :hello:


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed