我試圖反序列化我保存到文件(與二進制格式程序)的對象。無論我嘗試,我得到異常:流的末尾遇到解析完成格式化程序反序列化給出:在分析完成之前遇到的流結束
之前,我有以下幾行代碼:
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;
}
我也試過:
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;
}
但無論我做,總是得到例外:
分析完成前遇到的流結束
ADDITION: 我只是做了一些額外的測試。如果我有一個簡單的對象,只有幾個屬性,它工作得很好。使用更多(大)複雜的對象,包含其他對象,枚舉等封裝,這是我得到異常的時候。
我已經做到了,沒有幫助,還給出了異常。 – royu