lundi 18 mai 2009

Lire les fichiers de configuration (.INI) en C#

 

     Les fichiers .INI sont des fichiers texte classiques, structurés de la façon suivante :

[SECTION]
Key0 = value_for_this_key
Key1 = value_for_this_key

[SECTION2]
Key0 = value_for_this_key

[....]

    Pour les lire, nous pouvons simplement faire appel aux API standards de Windows contenues dans la DLL Kernel32 :

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key, string def, StringBuilder retVal,int size, string filePath);


    L’utilisation de ces méthodes est très intuitive.  Prenons comme exemple les fichiers favoris d’Internet Explorer.  Ces fichiers ont une extension .URL, mais leur structure est celle d’un fichier de configuration classique. considérons le fichier suivant :

[DEFAULT]
BASEURL=http://thoums.blogspot.com/
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
URL=http://thoums.blogspot.com/
IDList=
IconFile=http://thoums.blogspot.com/favicon.ico
IconIndex=1

   Pour lire le champ BASEURL il suffit d’écrire :

StringBuilder valeur = new StringBuilder(32768);
GetPrivateProfileString("DEFAUT", "BASEURL", "", valeur, valeur.MaxCapacity, @"C:\MyFavorite.URL");
Console.WriteLine(valeur.ToString());

     L’écriture se fait de la même manière. Notez que si la section dans laquelle vous souhaitez ajouter une clé n’existe pas, elle sera crée, de même que la clé. Par ailleurs si vous tentez d’écrire dans un fichier qui n’existe pas, il sera également créé. Cette méthode n’est pas liée à l’extension du fichier, tout fichier texte ayant une structure [Section] clé=valeur,  pourra être traité de cette façon.

Aucun commentaire: