/// <summary> /// Загрузить из файла информацию о списке компаний и их связях /// </summary> /// <param name="fileName">Имя файла, из которого читаются данные</param> /// <returns>Список компаний и их связей, null в случае ошибки (вообще, будет выброшено исключение)</returns> static void LoadInfoFromFile() { string fileName = string.Empty; while (true) { Console.WriteLine("Введите имя файла БЕЗ расширения, из которого вы хотите осуществить загрузку данных:"); fileName = Console.ReadLine(); if (fileName.Intersect(Path.GetInvalidFileNameChars()).Any()) { Console.WriteLine("Введенное имя файла содержит недопустимые символы."); continue; } break; } fileName += ".bin"; if (!File.Exists(fileName)) { throw new FileNotFoundException("Файл с именем " + fileName + " не существует/не найден."); } BinaryFormatter bf = new BinaryFormatter(); CompaniesAndRelationsPool companies = null; using (FileStream fs = new FileStream(fileName, FileMode.Open)) { object readData = bf.Deserialize(fs); if (readData is CompaniesAndRelationsPool) { companies = readData as CompaniesAndRelationsPool; } else { throw new FormatException("В указанном файле " + fileName + " не было объекта, пригодного для десериализации в тип CompaniesPool."); } } CompaniesRelations = companies; Console.WriteLine("Данные успешно загружены из файла."); Console.WriteLine(); }
static void Main(string[] args) { CompaniesRelations = new CompaniesAndRelationsPool(); CompaniesRelations.Initialize(); int input = -1; while (true) { do { ShowMenu(); }while (!int.TryParse(Console.ReadLine(), out input)); Console.Clear(); try { switch (input) { case 1: ShowCompaniesPoolTable(); break; case 2: ShowCompaniesTable(); break; case 3: ShowRelationsByCompanyTemp(); break; case 4: AddNewCompany(); break; case 5: AddNewRelation(); break; case 6: DeleteCompany(); break; case 7: DeleteRelation(); break; case 8: SaveInfoToFile(); break; case 9: LoadInfoFromFile(); break; case 0: Console.WriteLine("Работа программы завершена."); return; default: Console.WriteLine("Команда не распознана. Пожалуйста, введите номер команды, указанный в меню."); break; } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(); } } }