2010-06-09 80 views
1

我想知道是否有人能夠幫助我,因爲我對C#還很陌生。我有一個帶文件夾的驅動器,帶有全部包含文件的文件夾。有沒有辦法循環遍歷這些文件並將所有這些文件名都收集到一個.txt文件中?遞歸獲取具有多個子目錄的目錄中的文件

我不知道如何實現這個到我的控制檯應用程序 - 所以有沒有人可以幫助任何代碼?

回答

3

現在我明白你想提示找到的每個文件的用戶,你可能想沿着這些線路試一下:

class Program 
{ 
    static IEnumerable<String> Visitor(String root, String searchPattern) 
    { 
     foreach (var file in Directory.GetFiles(root, searchPattern, SearchOption.TopDirectoryOnly)) 
     { 
      yield return file; 
     } 

     foreach (var folder in Directory.GetDirectories(root)) 
     { 
      foreach (var file in Visitor(folder, searchPattern)) 
       yield return file; 
     } 
    } 

    static void Main(string[] args) 
    { 
     foreach (var file in Visitor(args[0], args[1])) 
     { 
      Console.Write("Process {0}? (Y/N) ", file); 

      if (Console.ReadKey().Key == ConsoleKey.Y) 
      { 
       Console.WriteLine("{1}\tProcessing {0}...", file, Environment.NewLine); 
      } 
      else 
      { 
       Console.WriteLine(); 
      } 
     } 
    } 
} 

這將走的目錄結構,並且對於每場比賽,提示用戶是否處理該文件。

+0

如果我用這個,我怎麼可以把一個提示。例如...我想Console.Write(文件),以便運行此應用程序的用戶可以看到文件名。然而,在我的應用程序繼續做其他事情之前...我希望用戶按Y或Y來繼續。我該怎麼做呢? – yeahumok 2010-06-09 17:51:14

+0

我已經修改了我的答案以滿足您的需求。 – 2010-06-10 14:13:33

9
File.WriteAllLines("yourfile.txt", Directory.GetFiles("path", "*.*", SearchOption.AllDirectories)); 
3

也許這樣的事情?

 var files = Directory.GetFiles("c:\\", "*.*", SearchOption.AllDirectories); 
     using (var sw = new StreamWriter("output.txt")) 
     { 
      files.ToList().ForEach(file => sw.WriteLine(file)); 
     } 

不要忘了使用System.IO

相關問題