Получение списка каталогов и файлов - C#
Формулировка задачи:
Гуглю уже не первый день и никак не могу додумать как получить мне список всех файлов и подкаталогов в указанной папке. Пытался сам написать или найти готовый код. Максимум что находил, это вывод списка папок в корне, какие файлы в каждой из них есть и файлы в корне, а папки в каждой подпапке игнорировались.
Как это должно выглядеть:
Подскажи как написать код.
Решение задачи: «Получение списка каталогов и файлов»
textual
Листинг программы
class Program
{
static void Main()
{
// создаём две строковые переменные, в которые будут
// записанны адреса каталогов для копирования
string sourceDirectory, targetDirectory;
Console.Write("Укажите папку с файлами: ");
sourceDirectory = Console.ReadLine();
Console.Write("Укажите папку для копирования: ");
targetDirectory = Console.ReadLine();
// с помощью строковый переменных создаём экземпляры классов
// для работы с каталогами
DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);
CopyAll(diSource, diTarget);
Console.WriteLine("Копирование из директории {0} завершено", sourceDirectory);
Console.WriteLine("Для завершения работы нажмите любую клавишу...");
Console.ReadKey();
}
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
try
{
// Если каталог, в который необходимо скопировать файлы, не существует,
// то он создаётся
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Копируются все файлы из каталога в каталог
foreach (FileInfo fi in source.GetFiles())
{
Console.WriteLine(@"Копирование файла {0}\{1}", target.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Рекурсивно копируется каждый каталог
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
// после копирования одного каталога...
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
// ...функция вызывает сама себя до тех пор,
// пока все данные не будут скопированны
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
// исключение на случай, если пользователь введёт не правильно исходный каталог
catch (Exception e)
{
Console.WriteLine("Не верно указан адрес!");
Console.ReadKey();
Console.Clear();
Main();
}
}
}