2011-10-25 227 views
2

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

这是有效的,但现在我需要在程序完成后从文件中删除一行(网站)。我该怎么做?

这里是我的加载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' }); 
} 
+0

从文本文件中删除行的唯一方法是用除该行之外的所有内容覆盖文件。除非你从文件的* *端删除,在这种情况下,你可以想象截断文件。 –

回答

4

而不是分裂,这是简单的使用File.ReadAllLines或 - 从.NET 4 - File.ReadLines。后者读取一行行,所以你可以使用:(。这将与ReadAllLines工作过,当然 - 你只是更多的内存最终在时间)

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

File.WriteAllLines(file, linesToKeep); 

注使用File.*方法意味着您不必担心编写using语句来关闭资源等 - 您在示例代码中没有这样做。 (您从不关闭文件句柄...)

+0

是的。另外,在'\ n'上分割会留下那个讨厌的换行符。 –

+1

@JimMischel:我假设你的意思是回车?但是,是的:) –

+0

是的,我的意思是回车。 *拍额头* –