仅在主机文件尚未存在的情况下才附加一行

时间:2016-05-04 12:17:52

标签: c# streamwriter hosts

我的代码看起来像这样;

using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts")))
{
    w.WriteLine("127.0.0.1 www.google.com");
}

我想摆脱hosts文件中的重复项。如何检查行是否存在并阻止再次附加?

2 个答案:

答案 0 :(得分:1)

您可以使用这个小LINQ查询来检查是否已经有一行:

bool exists = File.ReadLines(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts"))
    .Any(l => l == "127.0.0.1 www.google.com");
if(!exists)
    w.WriteLine("127.0.0.1 www.google.com");

答案 1 :(得分:1)

可能是一个简单的解决方案:
只需阅读所有文本并检查文本是否存在。如果没有写入文件。

string texttowrite = "127.0.0.1 wwwgoogle.com";
string text = File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts"), Encoding.UTF8);
if (!text.Contains(texttowrite))
{
    using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts")))
    {
        w.WriteLine(texttowrite);
    }
}