//Реализация метода отображения списка жестких дисков компьютера private void DiskList() //Создание списка класса "Свойства элементов" { List <MainProperties> list = new List <MainProperties>(); try {//получения дисков (метод возвращает массив строк, содержащий имена логических дисков) foreach (var disk in Environment.GetLogicalDrives()) { try { //Создание переменной как новый класс "Свойства элементов" var item = new MainProperties() { //Добавление свойств пути и имени MainPath = disk, Name = disk }; //наполнение списка list.Add(item); } catch { } } } catch { } //сортировка по типу (директория/файл), затем по имени Items = list.OrderBy(o => o.Name).ToList(); }
//Попытка реализации метода десериализации public void Load(out MainProperties mainPropertiesObject) { //Чтение данных из json файла string objectJsonFile = File.ReadAllText("save_file.json"); //Десереализация mainPropertiesObject = JsonSerializer.Deserialize <MainProperties>(objectJsonFile); }
//Попытка реализации метода сериализации public void Save() {//создание переменной класса "Свойства элементов" var mainProperties = new MainProperties(); //Вызов метода сериализации в строковую string objectSerialised = JsonSerializer.Serialize(mainProperties); //Запись данных в json файл File.WriteAllText("save_file.json", objectSerialised); }
//Реализация метода вывода на экран строк элементов списка класса "Свойства элементов" static void PrintItem(MainProperties item) { // отображение имени элемента var name = item.Name.Length <= 50 ? item.Name : $"{item.Name.Substring(0, 47)}..."; //отображение типа элементов (файлы/директории var itemType = item.Size.HasValue ? string.Empty : "Dir"; //отображение размерности файлов var size = item.Size.HasValue ? SizeFormat(item.Size.Value) : string.Empty; //Вывод на экран консоли Console.WriteLine($"{name,-50} {itemType,3 } {size,15}"); }
//Информационное окно метода удаления static bool DeleteWindow(MainProperties item) { Console.ResetColor(); Console.Clear(); Console.WriteLine(item.MainPath); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Удалить выбранный элемент? Для подтверждения нажмите клавишу Y."); Console.ResetColor(); var key = Console.ReadKey(); return(key.Key == ConsoleKey.Y); }
//Отображает содержимое выбранной директории private void ItemList(string path) {//Создание списка класса "Свойства элементов" List <MainProperties> list = new List <MainProperties>(); try {//получения содержимого (метод возвращает имена всех файлов и подкаталогов) foreach (var entri in Directory.GetFileSystemEntries(path)) { try { //Создание переменной как новый класс "Свойства элементов" var item = new MainProperties() { //Добавление свойств пути и имени, а так же размера MainPath = entri, Name = Path.GetFileName(entri), //Размер при помощи тернарного оператора проверяем существование файла и данные о его размере Size = File.Exists(entri) ? new FileInfo(entri).Length : (long?)null }; //наполнение списка list.Add(item); } //Отлавливание исключений catch (Exception) { Console.WriteLine("Операция не удалась!"); } } } catch (Exception) { Console.WriteLine("Операция не удалась!"); } //сортировка по типу (директория/файл), затем по имени Items = list.OrderBy(o => o.Size.HasValue).ThenBy(o => o.Name).ToList(); //Создание перехода к предыдущей директории var PreviousPath = new MainProperties() { Name = "back" }; var parent = Directory.GetParent(path); if (parent != null && !parent.FullName.Equals(path)) { PreviousPath.MainPath = parent.FullName; } Items.Insert(0, PreviousPath); }
//Отображение файлового менеджера static void InfoList(IEnumerable <MainProperties> items, MainProperties selected = null) { Console.ResetColor(); Console.Clear(); //реализация выделения элементов foreach (var item in items) { if (item.Equals(selected)) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; } else { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } //Вывод на экран строк элементов списка класса "Свойства элементов" PrintItem(item); } }