2016-12-02 130 views
1

在我的程序中,我有一個treeview和一個folderbrowser和一個datagridview。用戶使用文件夾瀏覽器來選擇一個文件夾,其中包含一系列季節不同的節目。我的程序在樹狀視圖中顯示演示文件夾和季節文件夾,每次從樹狀視圖中選擇一個文件夾時,我希望它顯示該文件夾內的所有文件。我currectly使用此代碼:如何獲取文件夾內的所有文件?

public void fileProcessDirectory(string targetDirectory, string Name) 
    { 

     string[] fileEntries = Directory.GetFiles(targetDirectory); 
     foreach (string fileName in fileEntries) 
     { 
      FileProcessFile(fileName); 
     } 
     string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory); 
     foreach (string subdirectory in subdirectoryEntries) 
     { 
      fileProcessDirectory(subdirectory, Name); 
      break; 
     } 

    } 
    public void FileProcessFile(string path) 
    { 
     dataGridView.Rows.Add(path, "New"); 
    } 

它表明我有第一子文件夾內的文件。它用來顯示所有文件夾內的所有文件,所以我添加了一箇中斷,現在它顯示前3個文件並停在那裏。所以我希望它顯示所選子文件夾內的文件而不是所有的子文件夾。

+1

你有子文件夾中的文件嗎? – mybirthname

+0

它顯示了哪些文件? 「。」,「..」? –

+0

@mybirthname是的我有一個文件夾爲每個節目,然後每個節目有一個文件夾裏面的季節,然後文件都在子文件夾(季節) – melika

回答

1

你可以試試修改你的功能爲:

public void FileProcessDirectory(string targetDirectory, string subfolder) 
{ 
    // this adds files 
    foreach (string fileName in Directory.GetFiles(targetDirectory)) 
    { 
     FileProcessFile(fileName); 
    } 

    // if we pass subfolder as empty then nothing happens 
    if(string.IsNullOrEmpty(subfolder)) return; 
    // here we find our subfolder and display files for it   
    FileProcessDirectory(Directory.GetDirectories(targetDirectory).Where(d => d == targetDirectory + "\\" + subfolder).ToArray()[0], null); 
} 

而且ussage例如:

FileProcessDirectory(Directory.GetParent(Directory.GetCurrentDirectory()).FullName, "Debug"); 
+0

我得到這個錯誤:無法與適用[]索引到類型爲「IEnumerable的」 – melika

+0

@melika接着說:.ToArray()'的表達,現在應該現在的工作 –

+0

我聽到報告說指數爲邊界之外在運行時另一個錯誤數組 – melika

-1

SearchOption.AllDirectories

覆蓋目標文件夾

SearchOption.TopDirectoryOnly下的所有文件夾的文件

名單:僅在目標文件夾中的文件

System.IO.Directory.GetFiles(@"C:\Music", "*", SearchOption.AllDirectories); 
+0

請不要發佈裸露的代碼,也請提供解釋代碼的作用。 –

0

請糾正我的理解,如果我錯了: 用戶選擇文件夾,然後在樹形視圖中選擇賽季那麼他們就應該在數據網格視圖查看所有裏面的文件,對嗎?

我這樣

treeView1.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(treeView1_NodeMouseClick); 

實施,如果在樹節點用戶雙擊它顯示了內部數據網格的所有文件:

void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
    { 
     if (treeView1.SelectedNode != null) 
     { 
      dataGridView1.Rows.Clear(); 
      string[] fileEntries = System.IO.Directory.GetFiles(treeView1.SelectedNode.Text); 
      foreach (string fileName in fileEntries) 
      { 

       dataGridView1.Rows.Add(Path.GetFileName(fileName)); 
      } 
     } 
    } 

我想這個問題之前,或許由引起dataGrid沒有清除舊文件。希望能幫助到你。

相關問題