2009-12-09 12 views
1

J'ai un "|" fichier délimité que tout ce que je veux faire est de lire toutes les lignes et où "< \ HRM>" existe remplacer par "" (rien). Et où "HRM \" existe remplacer avec. Il doit tout écrire dans le même ordre que celui dans lequel il a été lu.C# remplacement d'éléments dans le fichier texte

Je voudrais faire cela en modifiant l'écriture originale, sans en écrire une nouvelle. Si je dois écrire un nouveau fichier, je suppose que je dois le faire.

Répondre

2

La question est de savoir comment est la taille du fichier pourrait changer la solution ou tout le moins ralentir.

using (StreamReader stream = new StreamReader(File.Open(@"YourFilePath", FileMode.Open))) 
{ 
    string fileText = stream.ReadToEnd(); 

    // Do your replacements 
    fileText = fileText.Replace(@"<\HRM>", string.Empty); 
    fileText = fileText.Replace(@"HRM\", ";"); 

    using (StreamWriter writer = new StreamWriter(File.Open("@YourFilePath", FileMode.Create))) 
    { 
     // You do a create because the new file will have less characters than the old one 
     writer.Write(fileText); 
    } 
} 
+0

Ugh, en lisant le tout en même temps? Le remplacement ligne par ligne est beaucoup plus facile sur votre utilisation de la mémoire. –

+0

Vous faites quelques suppositions, que A) il y a/n/r dans le fichier. Il pourrait ne pas être. B) qu'un "" ou "HRM \" n'emballe pas les lignes. Je ne savais pas à quoi ressemblait le fichier, donc le mieux serait de tout lire, même si c'est lent. J'allais juste lire en octets un tampon, mais comment pourrais-je savoir quand j'étais au milieu d'un "<\HRM>" ou non? –

+0

cela a bien fonctionné s'attendre à ce qu'il place dans un espace supplémentaire, de sorte qu'il finit par être quoi que | ; . Je l'ai souffert pour être quoi que ce soit | | le | sont déjà dans le fichier. –

0

Vous voulez en écrire un nouveau. Il y a de bonnes raisons de le faire, et pas des moindres, c'est que ce sera beaucoup plus rapide. Il sera également vous fournir un niveau de sécurité avec vos données (perte de puissance n'entraînera perte potentielle de données/corruption.

La procédure généralement acceptée est le long des lignes de de

  • Ouvrir le nouveau fichier
  • Dressez nouveau fichier
  • Déplacer au-dessus de l'ancien fichier
0

vous devez ré-écrire le fichier puisque vous serez personnages et donc décapage à le rendre plus compact - sauf si vous voulez remplacer votre < \ HRM> par des espaces équivalents pour conserver les positions.

String.Replace (« changer cela », « à ce »)

Questions connexes