2016-05-04 10 views
-2

Mein Code sieht so aus;Eine Zeile nur dann an eine hosts-Datei anhängen, wenn sie nicht bereits existiert

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

Ich möchte Dubletten in Hosts-Datei loswerden. Wie kann ich prüfen, ob eine Zeile vorhanden ist und verhindern, dass sie erneut hinzugefügt wird?

+0

Möchten Sie vorhandene Duplikate entfernen oder einfach verhindern, dass neue Duplikate erstellt werden? – derpirscher

+0

verhindern das Erstellen neuer Duplikate – Wiii

Antwort

0

eine einfache Lösung sein:
einfach die ganzen Text lesen und auf das Vorhandensein von Ihrem Text überprüfen. Wenn nicht, schreibe in die Datei.

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

es funktioniert sehr gut, danke – Wiii

1

können Sie diese kleine LINQ-Abfrage verwenden, um zu überprüfen, ob es bereits eine Zeile:

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"); 
Verwandte Themen