1

我正在制作一个使用 streamreader 和 streamwriter 的项目,我是否可以只替换或保存特定行中的文本而不影响其他行?如果我这样做

streamreader sr = new streamreader(@"txtfile");
list<string> lines = new list<string>();
while (!sr.EndOfStream)
sr.readline();
{
     lines.Add(sr.ReadLine();
}

//put in textbox
sr.close();

{
streamwriter sw = new streamwriter(@"txtfile");
sw.WriteLine(textBox1.text);
sw.close();
}

这只是一个示例,但我是否有可能使用 list 也不是 streamwriter?

4

3 回答 3

1

如果你想要一个单线解决方案(代码高尔夫 :))你可以使用

string path = @"C:\Test.txt";
string lineToReplace = "Relpace This Line";
string newLineValue = "I Replaced This Line";

File.WriteAllLines(path, File.ReadAllLines(path).Select(line => line.Equals(lineToReplace) ? newLineValue : line));
于 2013-01-24T04:54:36.083 回答
0

将文件读入内存,更改要更改的行,关闭阅读器,打开文件进行写入,将文件的新内容写出。

于 2013-01-24T04:26:04.613 回答
0

您不能只更改一行,但您可以到ReadAllLines找到要更改的行更改它并将其全部写入文件

StringBuilder newFile = new StringBuilder();
string temp = "";
string[] file = File.ReadAllLines(@"txtfile");

foreach (string line in file)
{
    if (line.Contains("string you want to replace"))
    {
        temp = line.Replace("string you want to replace", "New String");
        newFile.Append(temp + "\r\n");
        continue;
    }
    newFile.Append(line + "\r\n");
}

File.WriteAllText(@"txtfile", newFile.ToString());
于 2013-01-24T04:48:02.600 回答