Ecriture / lecture d'un fichier INI

Tsu91 Messages postés 41 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 11 septembre 2005 - 23 avril 2004 à 22:20
iblsysteme Messages postés 43 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2009 - 18 oct. 2008 à 19:19
Bonjour,
Je débute en c# et ma question est simple:
Comment écrire et lire dans un fichier Ini ?

merci :)

Séb

6 réponses

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
25 avril 2004 à 17:14
En .NET il n'existe pas de fonctions spécialement faites pour lire et ecrire dans les fichiers .ini, tu devras te servir de l'API Windows qui dispose de méthodes (ceci reste assez contraignant en code managé).

Tu peux alors ouvrir le fichier et le lire avec un StreamReader et des appels successifs à ReadLine.
Charge à toi de mémoriser les sections recontrées et de parser chaque ligne (un Split suffira pour le '=').

[Membre du Labo .NET]
Société TechNet-X
0
PascalCmoa Messages postés 239 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 17 janvier 2013 5
22 nov. 2004 à 12:05
:big) PascalCmoa :big)
[mailto:pascal.aknouche@free.fr email: PascalCmoa]

Salut Séb,

Il existe un moyen plus simple et en plus à la "mode", les fichiers XML. Il est assez simple de créer un fichier xml à travers ton application comme par exemple (tiré d'une appli que je suis en train de finir):

private void createXml()
{
XmlTextWriter tw = null;
try
{
tw = new XmlTextWriter("config.xml", null);

tw.Formatting = Formatting.Indented;
tw.Indentation = 6;
tw.Namespaces = false;
tw.WriteStartDocument();
//tw.WriteDocType("configuration", null, null, null);
tw.WriteComment("Fichier de configuration de l'application KeyChecker.");
tw.WriteStartElement("configuration");

tw.WriteStartElement("", "opacite", "");
tw.WriteString("0.5");
tw.WriteEndElement();

tw.WriteStartElement("", "auteur", "");
tw.WriteString("Pascal AKNOUCHE");
tw.WriteEndElement();

tw.WriteStartElement("", "nom", "");
tw.WriteString("KeyChecker");
tw.WriteEndElement();

tw.WriteStartElement("", "version", "");
tw.WriteString("1.0");
tw.WriteEndElement();

tw.WriteStartElement("", "dateCreation", "");
tw.WriteString("18/11/2004");
tw.WriteEndElement();

tw.WriteEndElement(); // Fin du noeud configuration

//Write the XML to file and close the myXmlTextWriter
tw.Flush();
tw.Close();

}
finally
{
if (tw != null)
tw.Close();
}
}

et pour lire une information du fichier xml généré:

private String lectureOpacite(String leFichier)
{
XmlTextReader tr = null;
String laValeur = "";
tr = new XmlTextReader(leFichier);
while(tr.Read())
{
if(tr.NodeType == XmlNodeType.Element)
{
if (tr.LocalName.Equals("opacite"))
{
laValeur = tr.ReadString();
}

}
}
return laValeur;
}

A toi maintenant d'adapter ton code.

Tiens moi au courant :big) .

PascalCmoa :-p
0
cs_piep14 Messages postés 345 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 13 mai 2011
18 mai 2005 à 18:22
Moi je souhaite plus d'informations sur cette source car je n'arrive pas a l'utiliser !!
0
kuoleum Messages postés 1 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 21 juillet 2005
21 juil. 2005 à 11:20
Bonjour,

je voudrais savoir ce que signifie la ligne:

if(tr.NodeType == XmlNodeType.Element)??



A quoi correspond Element?



Merci d'avance!



Kuo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scaythe Messages postés 10 Date d'inscription mercredi 4 février 2004 Statut Membre Dernière intervention 4 juin 2010
15 nov. 2005 à 15:21
Voici le code pour lire et ecrire dans un fichier de conf... tu devrais pouvoir l''adapter facilement à tes besoins. Je l'ai recuperer sur un notre site de developpeurs (www.developpez.com)

/*
* Classe permettant la lecture et ecriture des fichiers de configuration (App.config)
* Auteur: LEBRUN Thomas < [mailto:lebrun_thomas@hotmail.com lebrun_thomas@hotmail.com] >
*
* Vous êtes libre d'utiliser, modifier, distribuer cette classe
* tant que le nom de l'auteur y apparait clairement.
*
* */
using System;
using System.IO;
using System.Xml;
using System.Windows.Forms;
using System.Reflection;

namespace Utilities.Configuration
{
/// <summary>
/// Classe permettant la lecture et ecriture des fichiers de configuration (App.config)
/// </summary>
public class ConfigReaderWriter
{
private static string CONFIG_FILE = Application.StartupPath + @"" + Assembly.GetEntryAssembly().GetName().Name + ".exe.config";

private XmlTextReader LecteurXml = null;
private FileStream StreamFichier = null;

/// <summary>
/// Méthode utilisée pour charger le fichier de configuration dans un XmlTextReader
/// </summary>
/// <returns>Un XmlTextReader si tout va bien. Null dans le cas contraire.</returns>
private XmlTextReader ReadConfig()
{
try
{
StreamFichier = new FileStream(CONFIG_FILE, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);

LecteurXml = new XmlTextReader(StreamFichier);
}
catch(IOException Ex)
{
MessageBox.Show("Erreur inattendue.\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}

return LecteurXml;
}

/// <summary>
/// Méthode utilisée pour permettre la libération (fermeture) des ressources.
/// </summary>
public void Close()
{
if ( LecteurXml != null )
{
LecteurXml.Close();
}

if ( StreamFichier != null )
{
StreamFichier.Close();
}
}

/// <summary>
/// Récupère, dans le fichier XML, la valeur de noeud demandé.
/// </summary>
/// Noeud dont on veut la valeur

/// <returns>Une chaîne de caractère représentant la valeur de noeud demndé.</returns>
public string GetXmlValue(string ElementName)
{
string Value = null;
XmlTextReader XmlReader = null;

try
{
// Lecture du fichier de configuation
XmlReader = ReadConfig();

// Tant que l'on peut lire
while ( XmlReader.Read() )
{
// On récupère le type de noeud actuel
XmlNodeType NodeType = XmlReader.NodeType;

// Si c'est un élément
if( NodeType == XmlNodeType.Element )
{
// et qu'il vaut "add" et que la valeur de "key" est égale à celle passée en paramètre
if (XmlReader.Name.Equals("add") && XmlReader.GetAttribute("key").Equals(ElementName))
{
// On récupère la valeur de cet élément
Value = XmlReader.GetAttribute("value");
// On ferme alors le XmlTextReader
XmlReader.Close();

// On retourne la valeur que l'on vient de trouver
return Value;
}
}
}
}
catch (XmlException Ex)
{
MessageBox.Show("Erreur inattendue.\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
finally
{
// Fermeture de XmlReader qui a chargé le fichier de configuration
if ( XmlReader != null )
{
XmlReader.Close();
}
}

return Value;
}

/// <summary>
/// Insère, dans le fichier XML, la valeur de noeud demandé.
/// </summary>
/// Noeud dont on veut modifier la valeur

/// Nouvelle valeur que l'on veut affecter au noeud

/// <returns>Une chaîne de caractère représentant la valeur de noeud demndé.</returns>
public void SetXmlValue(string ElementName, string sValue)
{
XmlTextReader XmlReader = null;
XmlDocument XmlWritter = null;

try
{
// Lecture du fichier de configuation
XmlReader = ReadConfig();

// Tant que l'on peut lire
while ( XmlReader.Read() )
{
// Si le nom vaut "add" et que la valeur de "key" est égale à celle passée en paramètre
if (XmlReader.Name.Equals("add") && XmlReader.GetAttribute("key").Equals(ElementName))
{
// On libère les ressources (fichier de config)
this.Close();

// On charge le fichier de config dans un XmlDocument
XmlWritter = new XmlDocument();
XmlWritter.Load(CONFIG_FILE);

XmlElement ElementRacine = XmlWritter.DocumentElement;

XmlAttribute AttributXml = null;
XmlNode sectionNode = null;

XmlNode groupNode = ElementRacine;

// On recherche les Nodes du nom de "add"
sectionNode = groupNode.SelectSingleNode("appSettings");

// Si on ne trouve pas cette nom, on la rajoute
if (sectionNode == null)
{
sectionNode = groupNode.AppendChild(XmlWritter.CreateElement("appSettings"));
}

// On recherche ensuite la clé ayant dont le nom est passé en parmètre
XmlNode NodeCherche = sectionNode.SelectSingleNode("add[@key="" + ElementName + ""]");

// Si cette clé n'existe pas, on la rajoute
if ( NodeCherche == null )
{
XmlElement element = XmlWritter.CreateElement("add");
AttributXml = XmlWritter.CreateAttribute("key");
AttributXml.Value = ElementName;
element.Attributes.Append(AttributXml);

NodeCherche = sectionNode.AppendChild(element);
}

// On créé l'attribut value et on lui assigne la valeur passée en paramètre
AttributXml = XmlWritter.CreateAttribute("value");
AttributXml.Value = sValue.ToString();
NodeCherche.Attributes.Append(AttributXml);

// Enregistrement du fichier
XmlWritter.Save(CONFIG_FILE);
}
}
}
catch (XmlException Ex)
{
MessageBox.Show("Erreur XML inattendue.\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
catch (Exception Ex)
{
MessageBox.Show("Erreur inattendue.\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
finally
{
// Fermeture de XmlReader qui a chargé le fichier de configuration (dans le cas où il ne serait pas déjà fermé)
if ( XmlReader != null )
{
XmlReader.Close();
}
}
}
}
}
0
iblsysteme Messages postés 43 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2009
18 oct. 2008 à 19:19
Intershopping

Bonjours à tous
Mois par exemple je suis novice
je souhaitrai lire et ecrire dans un fichier XML le Contenu d'un listbox
Merci à tous pour votre réponce
0
Rejoignez-nous