2012-10-22 109 views
6

我有一个文本文件,被另一个应用程序用作配置文件。我已经在文件的每一行读入一个字符串数组:替换文本文件中的一行

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

它的工作原理是如何我需要它。

现在,我需要做的就是用一个字符串替换arrLine [x]的整行,覆盖那行和那行上的内容。我写了代码来知道我需要替换的确切线,我只需要知道如何替换它。

我在想arrLine [x] .Replace(oldString,newString) - 如果这样工作,我会如何将更改提交到文本文件?我是否需要重写整个文件?我认为只有一行需要重写时,会对低效率方面有一点影响。

+1

只需用指定覆盖那里的字符串即可。无需替换。 –

回答

7

你应该能够只分配一个元素:

arrLine[yourLineNumber] = "Foo"; 

如何将我实际提交更改到文本文件?

完成此操作后,可以使用File.WriteAllLines(pathToFile, arrLine);将数据写回原始文件。

+0

谢谢 - 正是我需要的! – Aburley

+4

这实际上并没有回答关键问题,我理解为“是否有必要重新编写整个文件,或者是否有办法只替换已更改的单行文件?”像“sed for C#”就是这里真正想要的东西。 sed本身可以从Linux中的单声道c#程序调用Stdlib.system(“sed -i s?etc等等等等)”,但这会变得混乱。 – mickeyf

+0

好的,我只是读了一个1.5GB的PLY点云来改变第3行。它使用了8GB的内存。这是有道理的File.WriteSingeLine(); –