Загрузка данных


using System;
using System.IO;
using System.Linq;

string dir = Console.ReadLine();

if (Directory.Exists(dir))
{
    Console.WriteLine("Существует");
}
else
{
    Console.WriteLine("Не существует");
}

Analize(dir);

static void Analize(string dir)
{
    Dictionary<string, long> dict = new Dictionary<string, long>();
    int fileCounter = 0;
    int folderCounter = 0;

    if (Directory.Exists(dir))
    {
        DirectoryInfo pat = new DirectoryInfo(dir);
        Console.WriteLine($"Имя: {pat.Name} Путь: {pat.FullName}");

        FileInfo[] fileInfos = pat.GetFiles();
        for (int i = 0; i < fileInfos.Length; i++)
        {
            fileCounter++;
            Console.WriteLine($"Имя файла: {fileInfos[i].Name} Размер: {Format(fileInfos[i].Length)}");
            if (!dict.ContainsKey(fileInfos[i].Extension))
            {
                dict.Add(fileInfos[i].Extension, fileInfos[i].Length);
            }
            else
            {
                dict[fileInfos[i].Extension] += fileInfos[i].Length;
            }
        }

        foreach (DirectoryInfo subDir in pat.GetDirectories())
        {
            folderCounter++;
            Analize(subDir.FullName);
        }

        var biggest = fileInfos.OrderByDescending(f => f.Length).Take(3);

        var oldFiles = fileInfos.Where(f => f.LastWriteTime < DateTime.Now.AddYears(-1)).OrderBy(f => f.LastWriteTime).Take(5);

        Console.WriteLine($"Количество файлов: {fileCounter}");
        Console.WriteLine($"Количество папок: {folderCounter + 1}");
        Console.WriteLine($"Общий размер: {Format(pat.EnumerateFiles("*.*", SearchOption.AllDirectories).Sum(fi => fi.Length))}");
        Console.WriteLine("Самые большие файлы:");
        foreach (var file in biggest)
        {
            Console.WriteLine($"{file.Name} - {Format(file.Length)}");
        }

        Console.WriteLine("Старые файлы:");
        foreach (var file in oldFiles)
        {
            Console.WriteLine($"{file.Name} - {file.LastWriteTime}");
        }
    }
}

static string Format(long input)
{
    if (input < 1024)
    {
        return $"{input} б";
    }
    if (input < 1024 * 1024)
    {
        return $"{input / 1024} КБ";
    }
    if (input < (1024 * 1024 * 1024))
    {
        return $"{input / 1024 / 1024} МБ";
    }
    else
    {
        return $"{input / 1024 / 1024 / 1024} ГБ";
    }
}