Tôi đang cố gắng deserialize một đối tượng tôi lưu vào một tập tin (với Binary Formatter). Dù tôi cố gắng, tôi nhận được ngoại lệ: Kết thúc Suối gặp phải trước khi phân tích cú pháp được hoàn thànhđịnh dạng deserialize cho: Kết thúc Stream gặp phải trước khi phân tích cú pháp được hoàn thành
Tôi có dòng mã sau đây:
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;
}
Tôi cũng đã cố gắng:
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;
}
Nhưng bất cứ điều gì tôi làm, luôn có ngoại lệ:
Kết thúc luồng gặp phải trước khi phân tích cú pháp được hoàn thành
ADDITION: Tôi vừa thực hiện thêm một số thử nghiệm. Nếu tôi có một đối tượng đơn giản, chỉ một vài thuộc tính, nó hoạt động tốt. Sử dụng một đối tượng phức tạp hơn (lớn), có các đối tượng khác, enums, vv đóng gói, đó là khi tôi nhận được ngoại lệ.
Tôi đã không, không được, vẫn cung cấp cho các ngoại lệ. – royu