使用StreamReader检查文件是否包含字符串

jer*_*han 18 c# string file-io

我有一个字符串args[0].

到目前为止,这是我的代码:

static void Main(string[] args)
{
    string latestversion = args[0];
    // create reader & open file
    using (StreamReader sr = new StreamReader("C:\\Work\\list.txt"))
    {
        while (sr.Peek() >= 0)
        {
            // code here
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

我想检查一下我的list.txt文件是否包含args[0].如果是,那么我将创建另一个进程StreamWriter来写一个字符串10文件.我该怎么做呢?

Jon*_*eet 32

你期待文件特别大吗?如果没有,最简单的方法就是阅读整个内容:

using (StreamReader sr = new StreamReader("C:\\Work\\list.txt"))
{
    string contents = sr.ReadToEnd();
    if (contents.Contains(args[0]))
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

要么:

string contents = File.ReadAllText("C:\\Work\\list.txt");
if (contents.Contains(args[0]))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以逐行阅读:

foreach (string line in File.ReadLines("C:\\Work\\list.txt"))
{
    if (line.Contains(args[0]))
    {
        // ...
        // Break if you don't need to do anything else
    }
}
Run Code Online (Sandbox Code Playgroud)

或者甚至更像LINQ:

if (File.ReadLines("C:\\Work\\list.txt").Any(line => line.Contains(args[0])))
{
    ... 
}
Run Code Online (Sandbox Code Playgroud)

请注意,ReadLines只能从.NET 4中获得,但您可以合理地轻松地自行调用TextReader.ReadLine循环.