在控制台应用程序中浏览文件夹

问题描述:

我目前必须编写代码才能读取文件夹的所有文件并将它们写入控制台。下面,我也得到了使用浏览器从目录中选择单个文件的代码。我想知道我将如何使用浏览按钮选择文件夹。在控制台应用程序中浏览文件夹

代码来检查所有文件

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://*.com/questions/31059/how-do-you-configure-an-openfiledialog-to-select-folders – 2013-03-07 11:49:31

+0

这已经回答了http://*.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

首先,你需要添加参考至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 
      } 
     } 


    } 
} 

用户FolderBrowserDialog

FolderBrowserDialog b = new FolderBrowserDialog(); 

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

Alhough,对图像的UI操作让你可以使用DotImaging.UI

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

为此,您需要将主要功能(或者您的调用功能)标记为[请将STAThreadAttribute] – Techrocket9 2017-04-05 19:04:28