如何通过StreamWriter更改文件中的某些文本

时间:2012-06-30 12:17:44

标签: c# winforms filestream

我正在尝试更改.CSV文件中的某些文字。

StreamReader sReader = new StreamReader(path1);
while (sReader.Peek() != -1)
{
    rowValue = sReader.ReadLine();
    if (rowValue == "25")
    {
         sWriter = new StreamWriter(path1);
         rowValue = "27";
         sWriter.WriteLine(rowValue);
    }
}

什么都没发生。请问正确的方法是什么?

3 个答案:

答案 0 :(得分:1)

我不相信你可以做你想做的事......更新一行。如果它正在运行,那么您将值27附加到文件的末尾。

查看ReadAllLinesWriteAllLines方法。您需要读取整个文件,更改要更改的行,然后将其写回。

答案 1 :(得分:1)

好吧,如果要读取的文件不是很大,你可以尝试读取内存中的所有内容并回写

string[] lines = File.ReadAllLines(path1);
using(StreamWrite sw = new StreamWriter(path1))
{
    foreach(string line in lines)
    {
        string lineOut = line;
        if (line == "25") 
           lineOut = "27"; 
        sw.WriteLine(lineOut);
    }
    sw.Flush();
}

答案 2 :(得分:1)

您可以使用System.IO.File.ReadAllLines和System.IO.File.WriteAllLines轻松完成此任务

string[] lines = File.ReadAllLines(path1);

for(int i = 0; i < lines.Length; i++)
{
  if(lines[i] == "25") lines[i] = "27";
}

File.WriteAllLines(path1, lines);