Ecriture / lecture d'un fichier INI

Messages postés
41
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
11 septembre 2005
- - Dernière réponse : 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
Afficher la suite 

6 réponses

Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
12
0
Merci
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
Commenter la réponse de gg00xiv
Messages postés
240
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
17 janvier 2013
5
0
Merci
: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
Commenter la réponse de PascalCmoa
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011
0
Merci
Moi je souhaite plus d'informations sur cette source car je n'arrive pas a l'utiliser !!
Commenter la réponse de cs_piep14
Messages postés
1
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
21 juillet 2005
0
Merci
Bonjour,

je voudrais savoir ce que signifie la ligne:

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



A quoi correspond Element?



Merci d'avance!



Kuo
Commenter la réponse de kuoleum
Messages postés
11
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
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();
}
}
}
}
}
Commenter la réponse de scaythe
Messages postés
43
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
23 octobre 2009
0
Merci
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
Commenter la réponse de iblsysteme