-1

可能重复:
从文本文件中删除一行的有效方法

我有一个多线程应用程序和一个包含代理服务器列表的文本文件。如果代理无效,我需要从文本文件中删除它。

如果我不想失去应用程序的速度,该怎么做?

例如我需要62.109.29.58:8085

62.109.7.22:8085
62.109.0.35:8085
92.63.106.111:8085
78.24.216.163:8085
92.63.97.156:8085
82.146.56.156:8085
62.109.29.58:8085
78.24.220.173:8085
78.24.220.111:8085
92.63.106.124:8085
4

2 回答 2

4

由于您的文件看起来很小,您可以读取整个文件,删除您必须删除的行,然后将文件写回:

File.WriteAllLines("myfile.txt"
,   File.ReadLines("myfile.txt").Where(s => s != "62.109.29.58:8085").ToList()
);
于 2012-12-13T19:44:24.063 回答
0
string[] lines = System.IO.File.ReadAllLines("filename.txt");
for (int i = 0; i < lines.Length; i++)
{
    string line = lines[i];
    if (line == "what you are looking for")
       lines[i] = "";
}

string[] newLines = lines.Where(str => !string.IsNullOrEmpty(str)).ToArray();
using (Stream stream = File.OpenWrite("filename.txt"))
{
    using (StreamWriter sw = new StreamWriter(stream))
    {
        foreach (string line in newLines)
        {
            sw.WriteLine(line);  
        }
    }
}
于 2012-12-13T19:47:08.853 回答