C# 如何通过StreamWriter更改文件中的某些文本
我正在尝试更改.CSV文件中的一些文本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
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提出的替代方案。更直接!解决了的。谢谢,史蒂夫和克里斯纠正了语法问题。。。键入速度太快,但必须在此网站上进行。