Подтвердить что ты не робот

Просмотреть папку в Консольном приложении

В настоящее время мне приходится указывать код, чтобы разрешить мне читать все файлы в папке и записывать их на консоль. Ниже я также получил код для выбора отдельных файлов из каталога с помощью браузера. Я хотел бы знать, как я могу выбрать папку с помощью кнопки обзора.

код для проверки всех файлов

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

Ответ 1

Сначала вам нужно добавить ссылку на 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;
}

Ответ 3

В то же время, для операций с графическим интерфейсом вы можете использовать DotImaging.UI:

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