ECRITURE / LECTURE FACILE DANS UN FICHIER DE CONFIGURATION
harbaingan
Messages postés2Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention 8 juin 2004
-
8 juin 2004 à 19:06
Grouss
Messages postés1Date d'inscriptionvendredi 29 mars 2002StatutMembreDernière intervention 3 juin 2009
-
3 juin 2009 à 12:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ibhow
Messages postés1Date d'inscriptionvendredi 12 septembre 2008StatutMembreDernière intervention12 septembre 2008 12 sept. 2008 à 12:17
ça fonctionne bien ce code mais j'ai une question car il ne correspond pas tout à fait à mon cas.
J'ai un fichier de configuration qui contient des clés du type KEY=VALUE mais en plus j'ai des commentaires. Le problème c'est qu'avec le setProperty je perds tous les commentaires et l'ordre des clés du fichier d'origine. Il y a-t-il une solution pour venir juste mettre à jour la valeur de la clé (sans perdre l'ordre des clé et les commentaires)
Sinon ma solution serait de chercher dans le fichier la chaine "KEY=VALUE" et de la remplacer mais bon... setProperty semble prévu pour.
robo45
Messages postés2Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention17 août 2004 13 juil. 2006 à 16:41
Merci beaucoup pour ce code qui devrais me permmettre de gagner beaucoup de temps.
Bonne continuation :)
TFlorian
Messages postés194Date d'inscriptiondimanche 3 mars 2002StatutMembreDernière intervention19 décembre 20053 5 juil. 2005 à 09:16
Supper ton code !
j'ai gagné un temps précieux ! merci !!
toutefois il y a un truc .. lorsque ton fichier n'existe pas, ca plante .. c'est normal .. tu commance à lire avant d'écrire ..
pour eviter la lecture puis l'ecriture tu a la methode append, celle ci ajoute directement ce que tu veux a la fin de ton fichier de plus si le fichier n'existe pas il est crée
elle a aussi l'aventage de ne pas charger le fichier en mémoire donc c'est bien si tu fait de log qui font 200 Mo !!
pour utiliser la methode append tu modifi lle setConfig comme suite :
public void setConfig(String fichier, String key, String valeur) throws Exception
{
// La petite feinte : Il faur recharger entièrement le fichier
// et le réecrire.
//On construit l'adresse du fichier
String leFichier = System.getProperty("user.dir") + "/config/" + fichier;
// On fait pointer notre Properties sur le fichier
Properties config = new Properties();
// on n'a plus besoin de lire le fichier .. donc plus de risque de bug fichier inexistant , en plus on ne charge pas en memoire le fichier donc gain de temps de d'espace memoire
//FileInputStream fis = new FileInputStream(leFichier);
//config.load (fis);
//fis.close();
//FileOutputStream fos = new FileOutputStream(leFichier);
// On ajoute true pour dire d'utilisé la methode append
FileOutputStream fos = new FileOutputStream(leFichier,true);
config.setProperty(key,valeur);
config.store (fos,"Dernière mise a jour :");
// C'est important de mettre à null, le garbage collector
// passe plus vite !
fos.close();
leFichier = null;
fos = null;
//fis = null; // ne serre plus !!
config = null;
}
Voila !!
et bonne prog a tous ;-)
TFlorian
adx77
Messages postés8Date d'inscriptionmercredi 12 mai 2004StatutMembreDernière intervention15 janvier 2005 13 janv. 2005 à 11:04
Super, Le truc simple, bête, mais super util et qui fait gagner du temps ... Merci
harbaingan
Messages postés2Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention 8 juin 2004 8 juin 2004 à 19:06
Super la PeeX Team !!!!
Je cherchais un code source dans le genre depuis des mois, et faut avouer que les autres sources etaient pas aussi bandantes.
3 juin 2009 à 12:11
{
String fullPath = null;
FileOutputStream fos = null;
Properties config = null;
FileInputStream fis = null;
// La petite feinte : Il faur recharger entièrement le fichier
// et le réecrire.
//On construit l'adresse du fichier
fullPath = System.getProperty("user.dir") + "/config/" + fichier;
try
{
config = new Properties();
if (fullPath != null)
{
File fileRes = new File(fullPath);
if (fileRes.isFile())
{
fis = new FileInputStream(fullPath);
config.load(fis);
fis.close();
}
}
if (fis == null)
{
fos = new FileOutputStream(fullPath, true);
}
else
{
fos = new FileOutputStream(fullPath);
}
config.setProperty(key, valeur);
config.store(fos, "Dernière mise a jour :");
fos.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
fichier = null;
fos = null;
fis = null;
config = null;
}
}
12 sept. 2008 à 12:17
J'ai un fichier de configuration qui contient des clés du type KEY=VALUE mais en plus j'ai des commentaires. Le problème c'est qu'avec le setProperty je perds tous les commentaires et l'ordre des clés du fichier d'origine. Il y a-t-il une solution pour venir juste mettre à jour la valeur de la clé (sans perdre l'ordre des clé et les commentaires)
Sinon ma solution serait de chercher dans le fichier la chaine "KEY=VALUE" et de la remplacer mais bon... setProperty semble prévu pour.
13 juil. 2006 à 16:41
Bonne continuation :)
5 juil. 2005 à 09:16
j'ai gagné un temps précieux ! merci !!
toutefois il y a un truc .. lorsque ton fichier n'existe pas, ca plante .. c'est normal .. tu commance à lire avant d'écrire ..
pour eviter la lecture puis l'ecriture tu a la methode append, celle ci ajoute directement ce que tu veux a la fin de ton fichier de plus si le fichier n'existe pas il est crée
elle a aussi l'aventage de ne pas charger le fichier en mémoire donc c'est bien si tu fait de log qui font 200 Mo !!
pour utiliser la methode append tu modifi lle setConfig comme suite :
public void setConfig(String fichier, String key, String valeur) throws Exception
{
// La petite feinte : Il faur recharger entièrement le fichier
// et le réecrire.
//On construit l'adresse du fichier
String leFichier = System.getProperty("user.dir") + "/config/" + fichier;
// On fait pointer notre Properties sur le fichier
Properties config = new Properties();
// on n'a plus besoin de lire le fichier .. donc plus de risque de bug fichier inexistant , en plus on ne charge pas en memoire le fichier donc gain de temps de d'espace memoire
//FileInputStream fis = new FileInputStream(leFichier);
//config.load (fis);
//fis.close();
//FileOutputStream fos = new FileOutputStream(leFichier);
// On ajoute true pour dire d'utilisé la methode append
FileOutputStream fos = new FileOutputStream(leFichier,true);
config.setProperty(key,valeur);
config.store (fos,"Dernière mise a jour :");
// C'est important de mettre à null, le garbage collector
// passe plus vite !
fos.close();
leFichier = null;
fos = null;
//fis = null; // ne serre plus !!
config = null;
}
Voila !!
et bonne prog a tous ;-)
TFlorian
13 janv. 2005 à 11:04
8 juin 2004 à 19:06
Je cherchais un code source dans le genre depuis des mois, et faut avouer que les autres sources etaient pas aussi bandantes.
Chapeau : 10/10