2012-10-22 3 views
6

J'ai un fichier texte utilisé par une autre application en tant que fichier de configuration. J'ai lu dans chaque ligne du fichier dans un tableau de chaîne:Remplacer une ligne dans un fichier texte

string[] arrLine = File.ReadAllLines(pathToFile); 

qui fonctionne exactement comme j'en ai besoin. Maintenant, tout ce que je dois faire est de remplacer toute la ligne de arrLine [x] par une chaîne, en écrasant ce qui est sur cette ligne et cette ligne seulement. J'ai écrit du code pour connaître la ligne exacte que j'ai besoin de remplacer, j'ai juste besoin de savoir comment le remplacer.

Je pense à arrLine [x] .Replace (oldString, newString) - si cela fonctionne, comment est-ce que je commettrais la modification dans le fichier texte? Est-ce que j'ai besoin de réécrire le fichier entier? Je pense que ce serait un peu inefficace quand une seule ligne a besoin d'être réécrite?

+1

Il suffit d'écraser la chaîne qui est là avec une affectation. Pas besoin de remplacer. –

Répondre

7

Vous devriez pouvoir simplement attribuer cet élément:

arrLine[yourLineNumber] = "Foo"; 

comment pourrais-je engager réellement le changement dans le fichier texte?

Une fois que vous avez fait cela, vous pouvez utiliser File.WriteAllLines(pathToFile, arrLine); pour écrire les données dans le fichier d'origine.

+0

Merci - juste ce dont j'avais besoin! – Aburley

+4

En fait, cela ne répond pas à la question critique, que je comprends être "Est-il nécessaire de réécrire le fichier entier, ou est-il un moyen de remplacer seulement la seule ligne qui a été changé?" Quelque chose comme "sed for C#" est ce qui est vraiment voulu ici. sed lui-même peut être appelé à partir d'un programme mono C# sous Linux avec Stdlib.system ("sed -i s? etc bla bla"), mais cela peut devenir salissant. – mickeyf

+0

Ok, donc je viens de lire un nuage de points PLY 1.5gb pour changer la ligne 3. Il a utilisé 8 Go de RAM. Cela aurait du sens d'avoir File.WriteSingeLine(); –

Questions connexes