IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Modification d'une ligne d'un fichier


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Modification d'une ligne d'un fichier
    Bonjour à tous,
    Je rencontre aujourd'hui un souci technique sur un développement.

    Je vous explique la problématique :

    J'effectue une lecture de fichier.
    Une fois cette lecture effectuée et stocké je vais chercher la ligne qui m’intéresse.
    Sur cette ligne je souhaite réécrire entre deux chaîne de caractère qui resteront toujours les mêmes.
    Sauf que entre ces lignes je souhaiterai remplacer le contenu, qui change constamment pat la valeurs d'un listBox sélectionné.

    Voici mon code actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     if (File.Exists(pathws64) == true) // Vérification de l'existence du fichier
                {
                    string wsconf = File.ReadAllText(pathws64); // lecture fichier
                    if (wsconf.Contains("TwainDeviceID")) // vérification de l’existence de la ligne rechercher
                    {
                        wsconf = wsconf.Replace("    <add key=\"TwainDeviceID\" value=\" + C'est ici que je voudrais supprimer le contenu +\" />", "    <add key=\"TwainDeviceID\" value=\"" + listBox1.SelectedItem + "\" />");
                        File.WriteAllText(@"C:\Program Files\test\test\WCWedaCommandsProxy.exe.config", wsconf);
                    }
                }
    Auriez-vous une solution ?
    Je me casse la tête depuis une semaine sans résultat.
    J'ai essayer aussi avec la solution regex '.' mais rien ..

    Merci !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Si les deux "balises" ne sont qu'en un seul exemplaire, tu peux noter leur position dans le texte avec la méthode IndexOf, puis avec la méthode Substring prendre le "début" et la "fin" du texte (bref ce qu'il y a avant et après les balises).
    Ensuite c'est juste de la construction de chaine (par exemple avec Concat).

    Tatayo.

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Deux approches me viennent pour gérer cette situation. La première serait d'utiliser File.ReadAllLines à la place de File.ReadAllText : les différentes lignes du fichier seront récupérées dans un tableau au lieu d'une chaine unique ; il suffira de trouver la ligne avec la balise qui convient et de la remplacer directement dans le tableau avec le nouveau résultat. string.Join avec Environment.NewLine permettra de reconstituer le fichier pour l'enregistrer.

    La seconde est qu'il semblerait que ce soit un fichier xml. Dans ce cas autant profiter de la sémantique dont on dispose. Il faut utiliser XPath pour trouver l'élément à mettre à jour et modifier son attribut avant de sauvegarder le fichier.

    EDIT : Je viens de me rendre compte qu'il s'agit en fait du fichier .config d'une application. Dans ce cas il existe déjà toute une littérature sur le sujet. Tu peux commencer par examiner la classe ConfigurationManager sur la msdn. De mémoire il existe également au moins un ou deux tutoriels sur le site proposant des solutions.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je pencherai pour la solution de Noxen qui permettrait de garantie la structure du document xml modifié, si c'est bien un xml valide.

    On pourrait voir le document pathws64 pour t'en dire plus ?

Discussions similaires

  1. [sed] Modification d'une ligne dans un fichier
    Par tiresias54 dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 07/04/2015, 16h35
  2. Réponses: 3
    Dernier message: 08/08/2009, 18h05
  3. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  4. Modification d'une ligne d'un fichier
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 20/03/2007, 15h29
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo