Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ECRITURE / LECTURE FACILE DANS UN FICHIER DE CONFIGURATION


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 08/06/2004 Vu : 13 423

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Ce code très simple à déjà été présenté, mais je n'ai pas trouvé le code en integralité. (qui permette également de mettre a jour).

Donc.... Ce code permet de lire et d'ecrire des options dans un fichier de config en Java à l'aide de la classe properties. Vous pouvez même y mettre des commentaires en utilisant le # !

Exemple d'utilisation :

Configuration truc = new Configuration();
        try {
         truc.setConfig("test","max_connection","1000" );
         truc.setConfig("test","max_connerie","0" );
        
         System.out.println (truc.getConfig("test","max_connection"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();}
 

Source

  • /**
  • * Classe : Configuration
  • *
  • * Description :
  • * La classe Configuration va obtenir et mettre à jour les infos de
  • * configuration à partir des fichiers de configuration
  • * stockés sous [rep_courant]/config
  • * Le fichier doit existé ou une exception sera levée.
  • *
  • * date : 8/05/2004
  • * @author : PeeX Team
  • * @version : 1.0
  • *
  • */
  • // Les import
  • import java.io.FileInputStream;
  • import java.io.FileOutputStream;
  • import java.util.Properties;
  • import java.lang.Exception;
  • public class Configuration
  • {
  • /**
  • * Methode : getConfig
  • *
  • * Description :
  • * La méthode getConfig va retourner l'information de configuration
  • * désirée à partir d'un fichier de configuration
  • *
  • * date : 8/05/2004
  • * @param : String fichier : Le nom du fichier de configuration
  • * @param : String key : La clé dont on veut obtenir la valeur
  • *
  • * @return : String représentant la valeur de l'info
  • *
  • */
  • public String getConfig(String fichier, String key) throws Exception
  • {
  • //On construit l'adresse du fichier
  • String leFichier = System.getProperty("user.dir") + "/config/" + fichier;
  • // On fait pointer notre Properties sur ke fichier
  • FileInputStream fis = new FileInputStream(leFichier);
  • Properties config = new Properties();
  • config.load(fis);
  • String tmp = config.getProperty(key);
  • fis.close();
  • // C'est important de mettre à null, le garbage collector
  • // passe plus vite !
  • leFichier = null;
  • fis = null;
  • config = null;
  • if (tmp == null)
  • {
  • // On leve une exeption
  • throw new Exception("La valeur correspondant à '" + key + "' n'existe pas dans le fichier '" + fichier+"'");
  • }
  • return tmp;
  • }
  • /**
  • * Methode : setConfig
  • *
  • * Description :
  • * La méthode setConfig va mettre à jour/ inserer l'information de configuration
  • * désirée à partir dans un fichier de configuration
  • *
  • * date : 8/05/2004
  • * @param : String fichier : Le nom du fichier de configuration
  • * @param : String key : La clé dont on veut obtenir la valeur
  • * @param : String valeur : La valeur associée à la clé
  • *
  • * @return : String représentant la valeur de l'info
  • *
  • */
  • 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();
  • FileInputStream fis = new FileInputStream(leFichier);
  • config.load (fis);
  • fis.close();
  • FileOutputStream fos = new FileOutputStream(leFichier);
  • 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;
  • config = null;
  • }
  • }
/**
* Classe      : Configuration
* 
* Description :
*	La classe Configuration va obtenir et mettre à jour les infos de
*	configuration à partir des fichiers de configuration
*	stockés sous [rep_courant]/config 
*	Le fichier doit existé ou une exception sera levée.
*
* date        : 8/05/2004
* @author     : PeeX Team 
* @version    : 1.0
*
*/

// Les import
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import java.lang.Exception;

public class Configuration
{
	/**
	* Methode     : getConfig
	* 
	* Description :
	* 	La méthode getConfig va retourner l'information de configuration
	* 	désirée à partir d'un fichier de configuration
	*
	* date        : 8/05/2004
	* @param      : String fichier : Le nom du fichier de configuration
	* @param      : String key     : La clé dont on veut obtenir la valeur
	* 
	* @return     : String représentant la valeur de l'info
	*
	*/	
	
    public String getConfig(String fichier, String key) throws Exception
    {
    	//On construit l'adresse du fichier
        String leFichier = System.getProperty("user.dir") + "/config/" + fichier;

        // On fait pointer notre Properties sur ke fichier
    	FileInputStream fis = new FileInputStream(leFichier);
        Properties config = new Properties();
        config.load(fis);
        
        String tmp = config.getProperty(key);
        fis.close();
        
        // C'est important de mettre à null, le garbage collector
        // passe plus vite !
        leFichier = null;
        fis = null;
        config = null;
        
        if (tmp == null)
        {
        	// On leve une exeption
        	throw new Exception("La valeur correspondant à '" + key + "' n'existe pas dans le fichier '" + fichier+"'");
        }
        return tmp;
        
    }
        
	/**
	* Methode     : setConfig
	* 
	* Description :
	* 	La méthode setConfig va mettre à jour/ inserer l'information de configuration
	* 	désirée à partir dans un fichier de configuration
	*
	* date        : 8/05/2004
	* @param      : String fichier : Le nom du fichier de configuration
	* @param      : String key     : La clé dont on veut obtenir la valeur
	* @param      : String valeur  : La valeur associée à la clé
	* 
	* @return     : String représentant la valeur de l'info
	*
	*/	
    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();
        FileInputStream fis = new FileInputStream(leFichier);
        config.load (fis);
        fis.close();
        FileOutputStream fos = new FileOutputStream(leFichier);

        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;
        config = null;
    }
}

Conclusion

Voilà, c'est bête comme chou ! En attendant vos réactions, bon codage !!!!

La PeeX Team !!!
 

Commentaires et avis

signaler à un administrateur
Commentaire de harbaingan le 08/06/2004 19:06:09

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.

Chapeau : 10/10

signaler à un administrateur
Commentaire de adx77 le 13/01/2005 11:04:50

Super, Le truc simple, bête, mais super util et qui fait gagner du temps ... Merci

signaler à un administrateur
Commentaire de TFlorian le 05/07/2005 09:16:00

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

signaler à un administrateur
Commentaire de robo45 le 13/07/2006 16:41:44

Merci beaucoup pour ce code qui devrais me permmettre de gagner beaucoup de temps.
Bonne continuation :)

signaler à un administrateur
Commentaire de ibhow le 12/09/2008 12:17:07

ç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.

signaler à un administrateur
Commentaire de Grouss le 03/06/2009 12:11:33

public void setConfig(String fichier, String key, String valeur)
    {
        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;
        }
    }

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.