2016-05-04 1 views
-2

Мой код выглядит так:Добавление строки в файл 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. Как проверить, существует ли строка и не добавлять ее снова?

+0

Вы хотите избавиться от существующих дубликатов или просто не создавать новые дубликаты? – derpirscher

+0

предотвратить создание новых дубликатов – Wiii

ответ

0

Может быть простым решением:
Просто прочитайте весь текст и проверить на наличие текста. Если не пишите в файл.

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); 
    } 
} 
+1

это работает очень хорошо, спасибо – Wiii

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"); 
Смежные вопросы