Advertisement
StreetKatya

Serialize

May 27th, 2022
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.37 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using LibraryPrintEdition;
  10. using System.Windows.Forms;
  11. using System.Runtime.Serialization.Formatters.Binary;
  12. using System.IO;
  13. using System.Xml.Serialization;
  14. using System.Text.Json;
  15. using System.Threading;
  16.  
  17.  
  18. namespace laba_1__4sem_
  19. {
  20. public partial class Form1 : Form
  21. {
  22. List<PrintEdition> list = new List<PrintEdition>();
  23. List<PrintEdition> list2 = new List<PrintEdition>() { new Journal("dfdf", 2, 14, 2, 5), new Book() };
  24. public Form1()
  25. {
  26. InitializeComponent();
  27. list.Add(new Journal("Колобок", 15, 100, 25, 5));
  28. list.Add(new Book("Алиса в стране чудес", 15, 1000, 345, true));
  29. list.Add(new CopyBook("Учим Английский", 5, 100, 200, 5));
  30. foreach (PrintEdition pe in list)
  31. {
  32. listBox1.Items.Add(pe);
  33. }
  34. }
  35.  
  36. private void textBox1_TextChanged(object sender, EventArgs e)
  37. {
  38.  
  39. }
  40.  
  41. private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  42. {
  43.  
  44. }
  45.  
  46. private void SerializeButton_Click(object sender, EventArgs e)
  47. {
  48.  
  49. string fileName = filenameTextBox.Text;
  50. if(comboBox1.Text == "Двоичная сериализация")//Двоичная сериализация
  51. {
  52. fileName += ".dat";
  53. BinaryFormatter binFormat = new BinaryFormatter();
  54.  
  55. using(Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
  56. {
  57. binFormat.Serialize(fStream, list);
  58. }
  59. }
  60. else if(comboBox1.Text == "XML")//XML
  61. {
  62. fileName += ".xml";
  63. using(var sw = new StreamWriter(fileName))
  64. {
  65. XmlSerializer xmlFormat = new XmlSerializer(typeof(List<PrintEdition>));
  66. xmlFormat.Serialize(sw, list2);
  67. }
  68. //using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
  69. //{
  70. // XmlSerializer xmlFormat = new XmlSerializer(typeof(List<PrintEdition>));
  71. // xmlFormat.Serialize(fStream, list2);
  72. //}
  73.  
  74. //XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<PrintEdition>));
  75. //using (FileStream fs = new FileStream("serializexml.xml", FileMode.OpenOrCreate))
  76. //{
  77. // xmlSerializer.Serialize(fs, list2);
  78. //}
  79. }
  80. else if(comboBox1.Text == "JSON")//JSON
  81. {
  82. //fileName += ".json";
  83. //using (StreamWriter fs = new StreamWriter(fileName))
  84. //{
  85. // JsonSerializer jsonSerializer = new JsonSerializer();
  86. // jsonSerializer.Serialize(fs, list2);
  87. // Console.WriteLine("Data has been saved to file");
  88. //}
  89. }
  90. }
  91.  
  92. private void button1_Click(object sender, EventArgs e)
  93. {
  94. OpenFileDialog ofd = new OpenFileDialog();
  95. ofd.ShowDialog();
  96. List<PrintEdition> newList = new List<PrintEdition>();
  97. if(ofd.FileName.Contains(".dat"))//Двоичная десериализация
  98. {
  99. BinaryFormatter binFormat = new BinaryFormatter();
  100.  
  101. // Read the list from the binary file.
  102. using (Stream fStream = File.OpenRead(ofd.FileName))
  103. {
  104. newList = (List<PrintEdition>)binFormat.Deserialize(fStream);
  105. foreach(var item in newList)
  106. {
  107. listBox2.Items.Add(item);
  108. Thread.Sleep(1000);
  109. }
  110. }
  111. }
  112. else if(ofd.FileName.Contains(".xml"))//XML десериализация
  113. {
  114. XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<PrintEdition>));
  115. using (Stream fStream = File.OpenRead(ofd.FileName))
  116. {
  117. list2 = xmlSerializer.Deserialize(fStream) as List<PrintEdition>;
  118. }
  119. listBox2.Items.Clear();
  120. foreach (var item in list2)
  121. {
  122. listBox2.Items.Add(item);
  123. }
  124. Invalidate();
  125. }
  126. else if(ofd.FileName.Contains(".json"))//JSON десериализация
  127. {
  128. using (StreamReader sr = new StreamReader(ofd.FileName))
  129. {
  130. var json = sr.ReadToEnd();
  131. string jsonString = File.ReadAllText(ofd.FileName);
  132.  
  133. list2 = JsonSerializer.Deserialize<List<PrintEdition>>(json);
  134.  
  135. }
  136. listBox2.Items.Clear();
  137. foreach (var item in list2)
  138. {
  139. listBox2.Items.Add(item);
  140. }
  141. Invalidate();
  142. }
  143. }
  144. }
  145. }
  146.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement