手动输入要搜索的内容

Manually entering what to search for

我有一个程序可以手动循环遍历文件夹中的文件并搜索关键字,告诉您哪个文件有这些关键字。

class Program
{
    static void Main()
    {
        string input = "";

        Console.WriteLine("Where? ");
        input = Console.ReadLine();
        LoopedData(input);
        Console.ReadLine();
    }

    static void LoopedData(string path)
    {
        string[] files;
        string[] directories;
        string lineToFind = keyword;
        files = Directory.GetFiles(path);
        foreach (string file in files)
        {
            int line = 1;
            using (var reader = new StreamReader(file))
            {
                // read file line by line 
                string lineRead;
                while ((lineRead = reader.ReadLine()) != null)
                {
                    if ( lineRead.Contains(lineToFind))
                    {
                        Console.WriteLine("File {0}, line: {1}", file, lineRead);
                        Console.ReadLine();
                    }
                    else
                    {
                        Console.WriteLine(" ");
                    }
                    line++;
                }
            }
            Console.WriteLine("Finished.....");
            Console.ReadLine();
            //Console.WriteLine(file);
            // look for string here
        }

        directories = Directory.GetDirectories(path);
        foreach (string directory in directories)
        {
            // Process each directory recursively
            LoopedData(directory);
        }
    }

}

我已经能够手动输入要搜索的文件夹,但我很难为关键字创建类似的方法。我曾尝试在 Main class 中引用它,但没有成功。我需要一双新鲜的眼睛。

我尝试的任何搜索都没有产生有用的结果

看来你已经知道该怎么做了。您正确地为路径做了它。要从用户那里获取 keyword,只需对路径执行相同的操作:

static void Main()
{
    string path = "";
    string keyword = "";

    Console.WriteLine("Where? "); // read path
    path = Console.ReadLine();
    Console.WriteLine("What? "); // read keyword
    keyword = Console.ReadLine();
    LoopedData(input, keyword);
    Console.ReadLine();
}

然后像这样更改您的 LoopedData 的签名以将 keyword 作为参数传递:

static void LoopedData(string path, string keywork)
{
    // your code
}