using System; using System.Collections.Generic; using System.IO; using Newtonsoft.Json; using CsvHelper; using System.Xml.Serialization; using YamlDotNet.Serialization; using System.Globalization; using System.Formats.Asn1; using CsvHelper.Configuration; namespace Формы { public enum FileType { CSV, JSON, XML, YAML } public class Model1 { public string Name { get; set; } public int Age { get; set; } } public class Model2 { public string firstname { get; set; } public string secondname { get; set; } } public class Model3 { public string firstname { get; set; } public string secondname { get; set; } public string thirdname { get; set; } public string happybirthiday { get; set;} } public class FileHandler { public static void WriteToFile(T data, string fileName, FileType fileType) { try { switch (fileType) { case FileType.CSV: using (var writer = new StreamWriter(fileName)) using (var csv = new CsvWriter(writer, new CsvConfiguration(System.Globalization.CultureInfo.InvariantCulture))) csv.WriteRecords(new T[] { data }); break; case FileType.JSON: File.WriteAllText(fileName, JsonConvert.SerializeObject(data)); break; case FileType.XML: var serializer = new XmlSerializer(typeof(T)); using (var writer = new StreamWriter(fileName)) serializer.Serialize(writer, data); break; case FileType.YAML: var serializerYaml = new Serializer(); var yaml = serializerYaml.Serialize(data); File.WriteAllText(fileName, yaml); break; default: Console.WriteLine("Выбран некорректный тип файла."); break; } } catch (Exception e) { Console.WriteLine("Произошла ошибка при записи файла: " + e.Message); } } public static T ReadFromFile(string fileName, FileType fileType) { try { switch (fileType) { case FileType.CSV: using (var reader = new StreamReader(fileName)) using (var csv = new CsvReader(reader, new CsvConfiguration(System.Globalization.CultureInfo.InvariantCulture))) { var records = csv.GetRecords(); return records.FirstOrDefault(); } case FileType.JSON: var json = File.ReadAllText(fileName); return JsonConvert.DeserializeObject(json); case FileType.XML: var serializer = new XmlSerializer(typeof(T)); using (var reader = new StreamReader(fileName)) { var obj = (T)serializer.Deserialize(reader); return obj; } case FileType.YAML: var deserializer = new Deserializer(); var yaml = File.ReadAllText(fileName); return deserializer.Deserialize(yaml); default: Console.WriteLine("Выбран некорректный тип файла."); return default(T); } } catch (Exception e) { Console.WriteLine("Произошла ошибка при чтении файла: " + e.Message); return default(T); } } } class Program { static void Main() { Console.BackgroundColor = ConsoleColor.Cyan; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine("Что хотите сделать:"); Console.WriteLine(" 1. Записать данные в файл \n 2. Прочитать данные из файла"); Console.Write("Выберите действие: "); int choice = Int32.Parse(Console.ReadLine()); Console.Write("Введите имя файла: "); string FileName_ = Console.ReadLine(); Console.WriteLine("Выберите тип файла (CSV, JSON, XML, YAML): "); FileType FileType_ = (FileType)Enum.Parse(typeof(FileType), Console.ReadLine(), true); Console.WriteLine("Выберите модель данных (Model1, Model2, Model3): "); string model = Console.ReadLine(); switch (choice) { case 1: if (model == "Model1") { Model1 dataModel1 = new Model1 { Name = "Damir", Age = 18 }; FileHandler.WriteToFile(dataModel1, FileName_, FileType_); } else if (model == "Model2") { Model2 dataModel2 = new Model2 { firstname = "Damir", secondname = "Gazizov" }; FileHandler.WriteToFile(dataModel2, FileName_, FileType_); } else if (model == "Model3") { Model3 dataModel3 = new Model3 { firstname = "Damir", secondname = "Gazizov", thirdname = "Ramilevich", happybirthiday = "19.04.2005" }; FileHandler.WriteToFile(dataModel3, FileName_, FileType_); } else Console.WriteLine("Некорректная модель данных."); break; case 2: if (model == "Model1") { Model1 dataReadModel1 = FileHandler.ReadFromFile(FileName_, FileType_); Console.WriteLine($"Данные из файла {FileName_}: "); Console.WriteLine($"Name: {dataReadModel1.Name}, Age: {dataReadModel1.Age}"); } else if (model == "Model2") { Model2 dataReadModel2 = FileHandler.ReadFromFile(FileName_, FileType_); Console.WriteLine($"Данные из файла {FileName_}: "); Console.WriteLine($"FirstName: {dataReadModel2.firstname}, SecondName: {dataReadModel2.secondname}"); } else if (model == "Model3") { Model3 dataReadModel3 = FileHandler.ReadFromFile(FileName_, FileType_); Console.WriteLine($"Данные из файла {FileName_}: "); Console.WriteLine($"FirstName: {dataReadModel3.firstname}, SecondName: {dataReadModel3.secondname}, ThirdName: {dataReadModel3.thirdname}, HappyBirthiday: {dataReadModel3.happybirthiday} "); } else { Console.WriteLine("Некорректная модель данных."); } break; default: Console.WriteLine("Некорректный выбор действия."); break; } } } }