2016-05-04 26 views
-2

私のコードは次のようになります。ホストファイルに行が追加されていない場合のみ

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

ホストファイルに重複を取り除きたい。行が存在するかどうかを確認して、行をもう一度追加できないようにする方法はありますか?

+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"); 
関連する問題