2011-05-21 113 views
0

我目前有代碼來遍歷我的計算機上的文件,雖然我試圖掛鉤Button.Click事件來執行此操作,我將如何做到這一點?輸出到哪裏去?下面C#迭代通過文件幫助

代碼:

using System; 
using System.IO; 
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

     } 
    } 
} 


public class FileSystemList : IEnumerable<string> 
{ 
    DirectoryInfo rootDirectory; 

    public FileSystemList(string root) 
    { 
     rootDirectory = new DirectoryInfo(root); 
    } 

    public IEnumerator<string> GetEnumerator() 
    { 
     return ProcessDirectory(rootDirectory).GetEnumerator(); 
    } 

    public IEnumerable<string> ProcessDirectory(DirectoryInfo dir) 
    { 
     yield return dir.FullName; 
     foreach (FileInfo file in dir.EnumerateFiles()) 
      yield return file.FullName; 
     foreach (DirectoryInfo subdir in dir.EnumerateDirectories()) 
      foreach (string result in ProcessDirectory(subdir)) 
       yield return result; 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return GetEnumerator(); 
    } 
} 

回答

0

您需要實例化一個對象FileSystemList在您的按鈕單擊事件處理程序,叫你需要它的方法(一foreach循環似乎有可能)。

至於結果 - 把輸出放在你想要的地方。它就像你的程序員一樣,希望它去。

var list = new FileSystemList(pathIWantToList); 
foreach(var item in list) 
{ 
    // do something 
} 
+0

你能舉個例子嗎? – James 2011-05-21 18:57:55

1

如果你有.NET 4.0,你可以使用Directory.EnumerateFiles爲自己節省很多麻煩。

+0

這是我最喜歡的;它被懶惰地評估,所以你可以使用LINQ擴展來過濾你的心臟的願望 – sehe 2011-05-21 21:38:54