Сериализация и десериализация - C# (217495)
Формулировка задачи:
Есть класс:
класс работает, сохраняет файлы.
Далее я делаю сериализацию его:
потом пытаюсь десериализовать его:
Все запускается, сериализация проходит успешно, но при десериализации во второй строке ругается на то, что "Адресат вызова создал исключение."
В чем ошибка? Как правильно сделать?
[Serializable] public class FilesData : ISerializable //класс, содержащий файлы { [Serializable] public struct fi { public string name; public byte[] data; } public readonly int count = 0; //public readonly byte[][] data; public fi[] dataFi; public FilesData() { } public FilesData(string[] str) { count = str.Length; fi[] K = new fi[count]; foreach (string s in str) { count--; FileStream A = new FileStream(s, FileMode.Open, FileAccess.Read); BufferedStream B = new BufferedStream(A); K[count].name = s; K[count].data = new byte[B.Length]; B.Read(K[count].data, 0, (int)B.Length); B.Close(); A.Close(); } dataFi = K; } public void GetObjectData(SerializationInfo si, StreamingContext ctx) { si.AddValue("Files", dataFi); } private FilesData(SerializationInfo si, StreamingContext ctx) { dataFi = (fi[])si.GetValue("Files", dataFi.GetType()); } }
string[] G = new string[2] { "D:\\!!!\\dataopen.bat", "D:\\!!!\\tym.mpf" }; FilesData fil = new FilesData(G); Stream toFile = File.Create("D:\\!!!\\tofile.dat"); BinaryFormatter toData = new BinaryFormatter(); toData.Serialize(toFile, fil); toFile.Close();
toFile = File.OpenRead("D:\\!!!\\tofile.dat"); FilesData filFromFile = (FilesData)toData.Deserialize(toFile);
Решение задачи: «Сериализация и десериализация»
textual
Листинг программы
FileStream fs;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д