如何使用二进制反序列化从文件文本文件反序列化
本文关键字:文件 反序列化 文本 何使用 二进制 | 更新日期: 2023-09-27 18:02:04
public static List<Restaurant> LoadRestaurantList()
{
FileStream fs = new FileStream("Restaurant.txt", FileMode.OpenOrCreate);
BinaryFormatter bf = new BinaryFormatter();
List<Restaurant> rest =(List<Restaurant>)bf.Deserialize(fs);
fs.Close();
return rest;
}
我有序列化的通用列表,我有,到"餐厅。txt"文件。
现在我想反序列化相同并将其返回到泛型列表,我已经尝试过了但是它不工作,它给出错误"Invalid Cast Expression"。
序列化代码:
public static void SaveRestaurantList(List<Restaurant> restaurantList)
{
FileStream fs = new FileStream("Restaurant.txt", FileMode.Create, FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
for (int i = 0; i < restaurantList.Count; i++)
{
Restaurant r = new Restaurant();
r = (Restaurant)restaurantList[i];
bf.Serialize(fs, r);
fs.Flush();
}
fs.Close();
}
有谁能帮忙解决这个问题吗
序列化和反序列化互为对立面。这意味着在序列化期间使用的类型在反序列化期间需要相同。
在您的代码中,情况并非如此。序列化Restaurant类型,但反序列化时期望的是List。按如下方式调整序列化代码:
public static void SaveRestaurantList(List<Restaurant> restaurantList)
{
using(FileStream fs = new FileStream("Restaurant.txt", FileMode.Create, FileAccess.Write))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, restaurantList);
}
}