C#. Как выводить из папки хранящие в ней другие папки
Хочу сделать так что бы при указания пути к папки на консоль выводилась ее содержимое. А именно выводились другие папки которые в ней хранятся. Но уже как 3 часа вожусь с этим и не могу так сделать. Может кто небудь подскажет?
Я только смог выводить подкаталог. К примеру у меня есть папка, в ней храниться еще 3 папки. Дак вот, когда я пишу путь к главной папки, то в консоль выводиться только одна содержимая папка с различными файлами. Но я не знаю как сделать так что бы выводились все папки и их содержимое. Наверное вы поняли.
Вот код который я написал:
static void Main(string[] args)
{
Console.WriteLine("путь к папке");
string firstInput = Console.ReadLine();
if (Directory.Exists(firstInput))
{
string[] potcatalogues = Directory.GetDirectories(firstInput);
foreach (string catalog in potcatalogues)
{
Console.WriteLine(catalog);
}
}
}
Ответы (2 шт):
Нашёл и чуть подправил код по первой же почти ссылке. Как вы искали 3 часа - не совсем понятно. Хорошим тоном будет так же оставлять в вопросе "попытки" того, что вы сделали и что у вас не получилось. Делается это для того, чтобы отвечающие люди понимали, что вы попытались и вам нужна помощь для решения NNN проблемы.
Для получения путей до файлов:
[STAThread]
static void Main(string[] args)
{
var files = GetFolderFiles();
foreach (string file in files)
Console.WriteLine(file);
Console.ReadKey();
}
static string[] GetFolderFiles()
{
using (FolderBrowserDialog choofdlog = new FolderBrowserDialog())
{
return choofdlog.ShowDialog() == DialogResult.OK && !string.IsNullOrWhiteSpace(choofdlog.SelectedPath)
? Directory.GetFiles(choofdlog.SelectedPath)
: default;
}
}
Методы класса Directory - https://docs.microsoft.com/ru-ru/dotnet/api/system.io.directory?view=net-6.0
Для получения путей до папок Directory.GetDirectories(choofdlog.SelectedPath)
Рекурсивный поиск это называется
static void Main(string[] args)
{
string path = @"C:\Source\ConsoleApp1";
Console.WriteLine(path);
ScanDirectory(path);
}
static void ScanDirectory(string path, int depth = 0)
{
foreach (string dir in Directory.GetDirectories(path))
{
Console.WriteLine(new string('-', depth) + Path.GetFileName(dir));
ScanDirectory(dir, depth + 1);
}
}
Вывод в консоль
C:\Source\ConsoleApp1
.vs
-ConsoleApp1
--DesignTimeBuild
--v16
--v17
ConsoleApp1
-bin
--x64
---Debug
----net6.0-windows
-----runtimes
------unix
-------lib
--------net6.0
------win
-------lib
--------net6.0
-obj
--x64
---Debug
----net6.0-windows
-----ref
-----refint