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 :

[ReplaceInFile] Remplacer une expression dans un fichier (maniere la plus élégante)?


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut [ReplaceInFile] Remplacer une expression dans un fichier (maniere la plus élégante)?
    Bonjour à tous,

    Existe une manière plus élégante de remplacer une expression dans un fichier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    static public void ReplaceInFile(string filePath, string searchText, string replaceText)
    {
    	using (StreamReader reader = new StreamReader(filePath))
    	{
    	    string content = reader.ReadToEnd();
    	}
     
        	content = Regex.Replace(content, searchText, replaceText );
     
        	using (StreamWriter writer = new StreamWriter(filePath))
    	{
       	     writer.Write(content);
    	}
    }
    En l'occurence c'est pour un fichier HTML de quelques KO, mais sur un fichier de plusieurs MO... je pense que c'est pas le mieux ?

    PS: je ne cherche pas l'optimisation absolu, mais plutôt un bon rapport entre lisibilité du code / performance pas trop désastreuse, et blindage du code

    merci

  2. #2
    Membre actif
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Points : 233
    Points
    233
    Par défaut
    Pour les petits fichiers d'accord, mais, pour les fichiers volumineux vaux mieux charger le contenu du fichier bloc par bloc dans un buffer, effectuer le remplacement des données et après réécrir le buffer modifié dans le fichier.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    emmr.rida merci de ta réponse,

    pour le moment j'arrive a créer le fichier en passant par un fichier "temporaire".

    C'est possible d'optimiser sans passer par un tel fichier ?

    Je ne trouve pas grand chose sur le net, pourtant pour un probleme commun... j'aimerais avoir un model "best practice" histoire d'avoir un truc robuste et propre

    je suppose que ca peut interesser pas mal de gens ici...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            public void ReplaceInFile(string pathFile, string oldStr, string newStr)
            {
                string line;
     
                using (TextReader tr = File.OpenText(pathFile))
                using (TextWriter tw = File.CreateText("ResulltFile"))
                {
                    while ((line = tr.ReadLine()) != null)
                    {
                        line = line.Replace(oldStr, newStr);
                        tw.WriteLine(line);
                    }
                }
            }

Discussions similaires

  1. remplacer une chaîne dans un fichier
    Par PH_DEMS dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/06/2008, 20h49
  2. Remplacer une ligne dans un fichier ?
    Par FenX. dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/05/2008, 10h45
  3. chercher une expression dans plusieurs fichiers ?
    Par condor_01 dans le forum Ubuntu
    Réponses: 3
    Dernier message: 11/09/2007, 20h28
  4. [Batch] remplacer une string dans un fichier
    Par yelbied dans le forum Windows
    Réponses: 5
    Dernier message: 12/07/2007, 10h36
  5. Remplacer une chaîne dans un fichier txt
    Par java_fun dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 11/06/2007, 19h57

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