using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace AlekseervMDK05._04Lab4 { class Program { /// /// Головной модуль,в котором происходит перебор всех файлов, которые были отсортированы /// /// static void Main(string[] args) { Console.WriteLine("Введите путь к директории:"); string sourcePath = Console.ReadLine(); if (!Directory.Exists(sourcePath)) { Console.WriteLine("Указанная директория не существует."); return; } long freeSpace = GetFreeSpace(sourcePath); Console.WriteLine($"Свободное место: {freeSpace / (1024 * 1024)} MB"); string imagesPath = Path.Combine(sourcePath, "Images"); string documentsPath = Path.Combine(sourcePath, "Documents"); string othersPath = Path.Combine(sourcePath, "Others"); Directory.CreateDirectory(imagesPath); Directory.CreateDirectory(documentsPath); Directory.CreateDirectory(othersPath); var files = Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories); int imageCount = 0; int documentCount = 0; int otherCount = 0; foreach (var file in files) { string extension = Path.GetExtension(file).ToLower(); try { if (IsImage(extension)) { MoveFile(file, imagesPath); imageCount++; } else if (IsDocument(extension)) { MoveFile(file, documentsPath); documentCount++; } else { MoveFile(file, othersPath); otherCount++; } } catch (Exception ex) { Console.WriteLine($"Ошибка при перемещении файла {file}: {ex.Message}"); } } string infoPath = Path.Combine(sourcePath, "Info.txt"); File.WriteAllText(infoPath, $"Изображения: {imageCount}\nДокументы: {documentCount}\nПрочие: {otherCount}"); Console.WriteLine("Сортировка завершена. Информация записана в Info.txt."); Console.ReadLine(); } /// /// Получаем информацию о свободном пространстве накопителя /// /// /// static long GetFreeSpace(string path) { DriveInfo driveInfo = new DriveInfo(Path.GetPathRoot(path)); return driveInfo.AvailableFreeSpace; } /// /// Поиск картинок /// /// /// static bool IsImage(string extension) { string[] imageExtensions = { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff" }; return imageExtensions.Contains(extension); } /// /// Поиск документов /// /// /// static bool IsDocument(string extension) { string[] documentExtensions = { ".pdf", ".doc", ".docx", ".txt", ".xls", ".xlsx" }; return documentExtensions.Contains(extension); } /// /// Перемещение файла /// /// /// static void MoveFile(string sourceFile, string destFolder) { string fileName = Path.GetFileName(sourceFile); string destFile = Path.Combine(destFolder, fileName); File.Move(sourceFile, destFile); Console.WriteLine($"Файл {fileName} перемещён в {destFolder}"); } } }