21

我目前必须编写代码以允许我读取文件夹的所有文件并将它们写入控制台。下面,我还获得了使用浏览器从目录中选择单个文件的代码。我想知道如何使用浏览按钮选择文件夹。

检查所有文件的代码

  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;
            }
4

3 回答 3

42

首先,您需要添加对System.Windows.Forms

然后,将STAThread属性添加到 main 方法。这表明您的程序是单线程的,并使其能够与 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
            }
        }


    }
}
于 2013-03-07T11:51:32.770 回答
3

用户FolderBrowserDialog

FolderBrowserDialog b = new FolderBrowserDialog();

if(b.ShowDialog() == DialogResult.OK)
{
  var folderName = b.SelectedPath;
}
于 2013-03-07T11:51:08.693 回答
1

虽然,您可以使用DotImaging.UI进行图像 UI 操作:

string fileName = UI.OpenFile(); //open-file dialog
于 2016-01-16T14:23:26.860 回答