123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- 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<T>
- {
- 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<T>();
- return records.FirstOrDefault();
- }
- case FileType.JSON:
- var json = File.ReadAllText(fileName);
- return JsonConvert.DeserializeObject<T>(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<T>(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<Model1>.WriteToFile(dataModel1, FileName_, FileType_);
- }
- else if (model == "Model2")
- {
- Model2 dataModel2 = new Model2 { firstname = "Damir", secondname = "Gazizov" };
- FileHandler<Model2>.WriteToFile(dataModel2, FileName_, FileType_);
- }
- else if (model == "Model3")
- {
- Model3 dataModel3 = new Model3 { firstname = "Damir", secondname = "Gazizov", thirdname = "Ramilevich", happybirthiday = "19.04.2005" };
- FileHandler<Model3>.WriteToFile(dataModel3, FileName_, FileType_);
- }
- else
- Console.WriteLine("Некорректная модель данных.");
- break;
- case 2:
- if (model == "Model1")
- {
- Model1 dataReadModel1 = FileHandler<Model1>.ReadFromFile(FileName_, FileType_);
- Console.WriteLine($"Данные из файла {FileName_}: ");
- Console.WriteLine($"Name: {dataReadModel1.Name}, Age: {dataReadModel1.Age}");
- }
- else if (model == "Model2")
- {
- Model2 dataReadModel2 = FileHandler<Model2>.ReadFromFile(FileName_, FileType_);
- Console.WriteLine($"Данные из файла {FileName_}: ");
- Console.WriteLine($"FirstName: {dataReadModel2.firstname}, SecondName: {dataReadModel2.secondname}");
- }
- else if (model == "Model3")
- {
- Model3 dataReadModel3 = FileHandler<Model3>.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;
- }
- }
- }
- }
|