Program.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using Newtonsoft.Json;
  5. using CsvHelper;
  6. using System.Xml.Serialization;
  7. using YamlDotNet.Serialization;
  8. using System.Globalization;
  9. using System.Formats.Asn1;
  10. using CsvHelper.Configuration;
  11. namespace Формы
  12. {
  13. public enum FileType
  14. {
  15. CSV,
  16. JSON,
  17. XML,
  18. YAML
  19. }
  20. public class Model1
  21. {
  22. public string Name { get; set; }
  23. public int Age { get; set; }
  24. }
  25. public class Model2
  26. {
  27. public string firstname { get; set; }
  28. public string secondname { get; set; }
  29. }
  30. public class Model3
  31. {
  32. public string firstname { get; set; }
  33. public string secondname { get; set; }
  34. public string thirdname { get; set; }
  35. public string happybirthiday { get; set;}
  36. }
  37. public class FileHandler<T>
  38. {
  39. public static void WriteToFile(T data, string fileName, FileType fileType)
  40. {
  41. try
  42. {
  43. switch (fileType)
  44. {
  45. case FileType.CSV:
  46. using (var writer = new StreamWriter(fileName))
  47. using (var csv = new CsvWriter(writer, new CsvConfiguration(System.Globalization.CultureInfo.InvariantCulture)))
  48. csv.WriteRecords(new T[] { data });
  49. break;
  50. case FileType.JSON:
  51. File.WriteAllText(fileName, JsonConvert.SerializeObject(data));
  52. break;
  53. case FileType.XML:
  54. var serializer = new XmlSerializer(typeof(T));
  55. using (var writer = new StreamWriter(fileName))
  56. serializer.Serialize(writer, data);
  57. break;
  58. case FileType.YAML:
  59. var serializerYaml = new Serializer();
  60. var yaml = serializerYaml.Serialize(data);
  61. File.WriteAllText(fileName, yaml);
  62. break;
  63. default:
  64. Console.WriteLine("Выбран некорректный тип файла.");
  65. break;
  66. }
  67. }
  68. catch (Exception e)
  69. {
  70. Console.WriteLine("Произошла ошибка при записи файла: " + e.Message);
  71. }
  72. }
  73. public static T ReadFromFile(string fileName, FileType fileType)
  74. {
  75. try
  76. {
  77. switch (fileType)
  78. {
  79. case FileType.CSV:
  80. using (var reader = new StreamReader(fileName))
  81. using (var csv = new CsvReader(reader, new CsvConfiguration(System.Globalization.CultureInfo.InvariantCulture)))
  82. {
  83. var records = csv.GetRecords<T>();
  84. return records.FirstOrDefault();
  85. }
  86. case FileType.JSON:
  87. var json = File.ReadAllText(fileName);
  88. return JsonConvert.DeserializeObject<T>(json);
  89. case FileType.XML:
  90. var serializer = new XmlSerializer(typeof(T));
  91. using (var reader = new StreamReader(fileName))
  92. {
  93. var obj = (T)serializer.Deserialize(reader);
  94. return obj;
  95. }
  96. case FileType.YAML:
  97. var deserializer = new Deserializer();
  98. var yaml = File.ReadAllText(fileName);
  99. return deserializer.Deserialize<T>(yaml);
  100. default:
  101. Console.WriteLine("Выбран некорректный тип файла.");
  102. return default(T);
  103. }
  104. }
  105. catch (Exception e)
  106. {
  107. Console.WriteLine("Произошла ошибка при чтении файла: " + e.Message);
  108. return default(T);
  109. }
  110. }
  111. }
  112. class Program
  113. {
  114. static void Main()
  115. {
  116. Console.BackgroundColor = ConsoleColor.Cyan;
  117. Console.ForegroundColor = ConsoleColor.Black;
  118. Console.WriteLine("Что хотите сделать:");
  119. Console.WriteLine(" 1. Записать данные в файл \n 2. Прочитать данные из файла");
  120. Console.Write("Выберите действие: ");
  121. int choice = Int32.Parse(Console.ReadLine());
  122. Console.Write("Введите имя файла: ");
  123. string FileName_ = Console.ReadLine();
  124. Console.WriteLine("Выберите тип файла (CSV, JSON, XML, YAML): ");
  125. FileType FileType_ = (FileType)Enum.Parse(typeof(FileType), Console.ReadLine(), true);
  126. Console.WriteLine("Выберите модель данных (Model1, Model2, Model3): ");
  127. string model = Console.ReadLine();
  128. switch (choice)
  129. {
  130. case 1:
  131. if (model == "Model1")
  132. {
  133. Model1 dataModel1 = new Model1 { Name = "Damir", Age = 18 };
  134. FileHandler<Model1>.WriteToFile(dataModel1, FileName_, FileType_);
  135. }
  136. else if (model == "Model2")
  137. {
  138. Model2 dataModel2 = new Model2 { firstname = "Damir", secondname = "Gazizov" };
  139. FileHandler<Model2>.WriteToFile(dataModel2, FileName_, FileType_);
  140. }
  141. else if (model == "Model3")
  142. {
  143. Model3 dataModel3 = new Model3 { firstname = "Damir", secondname = "Gazizov", thirdname = "Ramilevich", happybirthiday = "19.04.2005" };
  144. FileHandler<Model3>.WriteToFile(dataModel3, FileName_, FileType_);
  145. }
  146. else
  147. Console.WriteLine("Некорректная модель данных.");
  148. break;
  149. case 2:
  150. if (model == "Model1")
  151. {
  152. Model1 dataReadModel1 = FileHandler<Model1>.ReadFromFile(FileName_, FileType_);
  153. Console.WriteLine($"Данные из файла {FileName_}: ");
  154. Console.WriteLine($"Name: {dataReadModel1.Name}, Age: {dataReadModel1.Age}");
  155. }
  156. else if (model == "Model2")
  157. {
  158. Model2 dataReadModel2 = FileHandler<Model2>.ReadFromFile(FileName_, FileType_);
  159. Console.WriteLine($"Данные из файла {FileName_}: ");
  160. Console.WriteLine($"FirstName: {dataReadModel2.firstname}, SecondName: {dataReadModel2.secondname}");
  161. }
  162. else if (model == "Model3")
  163. {
  164. Model3 dataReadModel3 = FileHandler<Model3>.ReadFromFile(FileName_, FileType_);
  165. Console.WriteLine($"Данные из файла {FileName_}: ");
  166. Console.WriteLine($"FirstName: {dataReadModel3.firstname}, SecondName: {dataReadModel3.secondname}, ThirdName: {dataReadModel3.thirdname}, HappyBirthiday: {dataReadModel3.happybirthiday} ");
  167. }
  168. else
  169. {
  170. Console.WriteLine("Некорректная модель данных.");
  171. }
  172. break;
  173. default:
  174. Console.WriteLine("Некорректный выбор действия.");
  175. break;
  176. }
  177. }
  178. }
  179. }