Просмотреть папку в Консольном приложении
В настоящее время мне приходится указывать код, чтобы разрешить мне читать все файлы в папке и записывать их на консоль. Ниже я также получил код для выбора отдельных файлов из каталога с помощью браузера. Я хотел бы знать, как я могу выбрать папку с помощью кнопки обзора.
код для проверки всех файлов
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;
}
Ответы
Ответ 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