2015-11-25 21 views
0

我有一個Winforms應用程序。其中我有一個Folderbrowser,textbox1和兩個按鈕控件。從子目錄檢索特定文件類型

在我的文件夾裏面我有很多子文件夾,每個hahing都有更多的子文件夾。我想從一個命名的子目錄中選擇文件類型,並將其命名爲

string[] dirs = 
       Directory.GetDirectories(textBox1.Text, "p*", SearchOption.TopDirectoryOnly); 

並打印文件類型。我面臨的問題是我從根目錄獲取文件而不是從子目錄獲取文件。

private void button1_Click(object sender, EventArgs e) 
     { 
      FolderBrowserDialog folderBrowserDlg = new FolderBrowserDialog(); 
      folderBrowserDlg.ShowNewFolderButton = true; 
      DialogResult dlgResult = folderBrowserDlg.ShowDialog(); 
      if (dlgResult.Equals(DialogResult.OK)) 
      { 
       textBox1.Text = folderBrowserDlg.SelectedPath; 
       Environment.SpecialFolder rootFolder = folderBrowserDlg.RootFolder; 
      } 
     } 
    private void button3_Click(object sender, EventArgs e) 
     { 
      var file = System.IO.Directory.EnumerateFiles(textBox1.Text, "*.*", SearchOption.AllDirectories) 
      .Where(s => s.EndsWith(".html") || s.EndsWith(".mp3") || s.EndsWith(".png")); 
      string[] files = Directory.GetFiles(textBox1.Text); 
      string[] dirs = Directory.GetDirectories(textBox1.Text,"file"); 


      foreach (var a in dirs) 
      { 
       listBox1.Items.Add(a); 
      } 
      foreach (string item2 in dirs) 
      { 
       FileInfo f = new FileInfo(item2); 

       listBox1.Items.Add(f.Name); 

      } 
      foreach (string item in files) 
      { 
       FileInfo f = new FileInfo(item); 

       listBox1.Items.Add(f.Name); 

      } 

     } 
+1

Eh'SearchOption.TopDirectoryOnly'表示您只想搜索頂部目錄。看起來你想改爲使用SearchOption.AllDirectories選項。 –

回答

0

上週我做到了:

private void button1_Click(object sender, EventArgs e) 
{ 
    CheckDirectory("path_to_my_mother_directory"); 
} 

    private void CheckDirectory(string targetDirectory) 
    { 
     MyLog.LogInfo("Check directory", string.Format("Checking for files in {0} directory", targetDirectory)); 
     var fileEntries = Directory.GetFiles(targetDirectory); 
     foreach (var fileName in fileEntries) 
      ProcessFile(fileName); 

     // Check subfolders 
     var subdirectoryEntries = Directory.GetDirectories(targetDirectory); 
     foreach (var subdirectory in subdirectoryEntries) 
      CheckDirectory(subdirectory); 
    } 

    private void ProcessFile(string path) 
    { 
     MyLog.LogInfo("File Found", string.Format("File '{0}' found", path)); 

     var Fileinfo = new FileInfo(path); 
     if (Fileinfo.Exists && extentionFilesType.Contains(Fileinfo.Extension)) 
     { 
      MyLog.LogInfo("Check extension file", string.Format("File has a searched extension ({0})", Fileinfo.Extension)); 
      FilesToInsert.Add(Fileinfo); 
     } 
     else 
     { 
      MyLog.LogInfo("Check extension file", "File doesn't has a searched extension"); 
     } 
    } 

extentionFilesType與研究擴展列表。

相關問題