2013-03-07 40 views
13

我目前必須編寫代碼才能讀取文件夾的所有文件並將它們寫入控制檯。下面,我也得到了使用瀏覽器從目錄中選擇單個文件的代碼。我想知道我將如何使用瀏覽按鈕選擇文件夾。在控制檯應用程序中瀏覽文件夾

代碼來檢查所有文件

foreach(var path in Directory.GetFiles(@"C:\Name\Folder\")) 
    { 
     Console.WriteLine(path); // full path 
     Console.WriteLine(System.IO.Path.GetFileName(path)); // file name 
    } 

代碼以打開對話框

OpenFileDialog fileSelectPopUp = new OpenFileDialog(); 
      fileSelectPopUp.Title = ""; 
      fileSelectPopUp.InitialDirectory = @"c:\"; 
      fileSelectPopUp.Filter = "All EXCEL FILES (*.xlsx*)|*.xlsx*|All files (*.*)|*.*"; 
      fileSelectPopUp.FilterIndex = 2; 
      fileSelectPopUp.RestoreDirectory = true; 
      if (fileSelectPopUp.ShowDialog() == DialogResult.OK) 
      { 
       textBox1.Text = fileSelectPopUp.FileName; 
      } 
+0

不知道這是否會幫助,但你可以嘗試http://stackoverflow.com/questions/31059/how-do-you-configure-an-openfiledialog-to-select-folders – 2013-03-07 11:49:31

+0

這已經回答了http://stackoverflow.com/questions/11767/在c-sharp中瀏覽目錄...使用[FolderBrowserDialog ](http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.aspx) – clemchen 2013-03-07 11:51:14

回答

26

首先,你需要添加參考至System.Windows.Forms

然後,添加STAThread屬性的主要方法。這表明您的程序是單線程的並且使其能夠與COM組件(系統對話框使用)一起使用。

之後只可以使用FolderBrowserDialog與控制檯應用程序

static class Program 
{ 
    [STAThread] 
    static void Main(string[] args) 
    { 
     FolderBrowserDialog fbd = new FolderBrowserDialog(); 
     if (fbd.ShowDialog() == DialogResult.OK) 
     { 
      foreach (var path in Directory.GetFiles(fbd.SelectedPath)) 
      { 
       Console.WriteLine(path); // full path 
       Console.WriteLine(System.IO.Path.GetFileName(path)); // file name 
      } 
     } 


    } 
} 
2

用戶FolderBrowserDialog

FolderBrowserDialog b = new FolderBrowserDialog(); 

if(b.ShowDialog() == DialogResult.OK) 
{ 
    var folderName = b.SelectedPath; 
} 
1

Alhough,對圖像的UI操作讓你可以使用DotImaging.UI

string fileName = UI.OpenFile(); //open-file dialog 
+0

爲此,您需要將主要功能(或者您的調用功能)標記爲[請將STAThreadAttribute] – Techrocket9 2017-04-05 19:04:28

相關問題