Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过StreamWriter更改文件中的某些文本_C#_Winforms_Filestream - Fatal编程技术网

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

C# 如何通过StreamWriter更改文件中的某些文本,c#,winforms,filestream,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"; sWrit

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

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

我不相信你能做你想做的事。。。更新一行。如果它工作正常,则将值
27
附加到文件末尾


请查看以下内容和方法。您需要读取整个文件,更改要更改的行,然后将其写回。

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

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();
}

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

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

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

File.WriteAllLines(path1, lines);
string[]lines=File.ReadAllLines(路径1);
对于(int i=0;i
您实际上并没有向流中写入任何内容,您只是创建了一个
StreamWriter
的新实例并更改了
rowValue
的值。我添加了一行来写入rowValue。再说一遍,行是“25”@yogi,我对Flush()一无所知。@Alice-它真的是CSV类型的文件吗?还是每行只有一个值的纯文本?@Chris,文件扩展名为.csv,每行中的每个值都用逗号分隔,我在第7行有一个错误-无法分配给“行”,因为它是“foreach迭代”variable@Alice回答更新,但也要考虑Chris Gessler提出的替代方案。更直接!解决了的。谢谢,史蒂夫和克里斯纠正了语法问题。。。键入速度太快,但必须在此网站上进行。