roy*_*oyu 6 c# binary exception formatter
我试图反序列化我保存到文件的对象(使用二进制格式化程序).无论我尝试什么,我都会得到异常:解析完成之前遇到的End of Stream
我有以下几行代码:
public static T DeserializeFromBinaryFile<T>(string fileName)
{
T instance = default(T);
FileStream fs = new FileStream(fileName, FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter();
instance = (T)formatter.Deserialize(fs);
}
catch{}
finally
{
fs.Close();
}
return instance;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
public static T DeserializeFromBinaryFile<T>(string fileName)
{
T instance = default(T);
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
MemoryStream ms = new MemoryStream();
try
{
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, (int)fs.Length);
ms.Write(bytes, 0, (int)fs.Length);
ms.Position = 0;
ms.Seek(0, SeekOrigin.Begin);
}
catch { }
try
{
BinaryFormatter formatter = new BinaryFormatter();
instance = (T)formatter.Deserialize(ms);
}
catch { }
finally
{
ms.Close();
fs.Close();
}
return instance;
}
Run Code Online (Sandbox Code Playgroud)
但无论我做什么,总是得到例外:
解析完成之前遇到的流结束
附加:我刚做了一些额外的测试.如果我有一个简单的对象,只有几个属性,它可以正常工作.使用更多(大)复杂对象,封装其他对象,枚举等,这就是我得到异常的时候.
尝试在第二个 try/catch 块内为您的流设置positionto :0
BinaryFormatter b = new BinaryFormatter();
s.Position = 0;
return (YourObjectType)b.Deserialize(s);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3833 次 |
| 最近记录: |