2016-06-30 13 views
0

私は、フォルダ内のファイルを手動でループし、キーワードを検索してどのファイルがあるかを示すプログラムを用意しています。手動で検索するものを入力する

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クラスでそれを参照しようとしましたが、成功しませんでした。新鮮な目が必要です。

私が試した検索では役に立たない結果が得られません

答えて

1

あなたはすでに何をすべきか分かっているようです。パスのために正しく行っている。

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(); 
} 

、パラメータとしてkeywordを渡すために、そのようなあなたのLoopedDataの署名を変更します:

static void LoopedData(string path, string keywork) 
{ 
    // your code 
} 
ユーザーから keywordを取得するには、単にパスと同じことを行います