C# 从文本文件中删除一行

C# 从文本文件中删除一行,c#,file-io,C#,File Io,我正在创建一个程序,它将转到网站(从文本文件加载的网站列表),执行一些任务,然后从文本文件转到下一个网站 这是可行的,但现在我需要删除一行(网站)从文件后,程序完成了它。我怎么做 以下是我在网站中加载txt的代码: DialogResult result = openFileDialog1.ShowDialog(); if (openFileDialog1.ShowDialog() == DialogResult.OK) { System.IO.StreamReader sr = new

我正在创建一个程序,它将转到网站(从文本文件加载的网站列表),执行一些任务,然后从文本文件转到下一个网站

这是可行的,但现在我需要删除一行(网站)从文件后,程序完成了它。我怎么做

以下是我在网站中加载txt的代码:

DialogResult result = openFileDialog1.ShowDialog();
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    System.IO.StreamReader sr = new
    System.IO.StreamReader(openFileDialog1.FileName);
    text = sr.ReadToEnd();
    split = text.Split(new Char[] {'\n' });
}

与拆分相比,从.NET4使用or更简单。后者逐行读取,因此您可以使用:

var linesToKeep = File.ReadLines(file)
                      .Where(line => line != lineYouWantToRemove)
                      .ToArray();

File.WriteAllLines(file, linesToKeep);
(当然,这也适用于
ReadAllLines
——一次只会有更多的内存。)


请注意,使用
文件。*
方法意味着您不必担心使用
语句来关闭资源等来编写
,而您在示例代码中没有这样做。(永远不要关闭文件句柄…

从文本文件中删除一行的唯一方法是用除该行以外的所有内容覆盖该文件。除非你从文件的末尾删除,在这种情况下你可能会截短文件。是的。此外,在
\n
上拆分会留下讨厌的换行。@JimMischel:我想你是说回车吧?但是是的:)是的,我的意思是马车返回。拍打forehead@JonSkeet:嘿,我使用了你的代码,但结果是我的文件中的所有数据都丢失了。嗯,怎么了?@Cdeez:没有更多的信息,我不知道。请用一个简短但完整的例子发布一个新问题。