Сериализация и десериализация - 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;