在Console Application中浏览文件夹

时间:2013-03-07 11:46:59

标签: c# file-upload

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

检查所有文件的代码

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

3 个答案:

答案 0 :(得分:31)

首先,您需要添加对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
            }
        }


    }
}

答案 1 :(得分:2)

使用FolderBrowserDialog

FolderBrowserDialog b = new FolderBrowserDialog();

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

答案 2 :(得分:1)

尽管如此,对于图片用户界面操作,您可以使用DotImaging.UI

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