1

我正在尝试更改 .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);
    }
}

没啥事儿。请问正确的方法是什么?

4

3 回答 3

1

我不相信你能做你想做的事……更新一行。如果它完全起作用,则将值附加27到文件的末尾。

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

于 2012-06-30T12:26:29.980 回答
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();
}
于 2012-06-30T12:26:43.150 回答
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);
于 2012-06-30T12:32:46.607 回答