Próbuję deserializować obiekt, który zapisałem, do pliku (z Binary Formatter). Cokolwiek próbuję, pojawia się wyjątek: Koniec Stream napotkał przed parsowanie zostało zakończoneFormatriformer deserialize daje: Koniec strumienia napotkanego przed zakończeniem parsowania
Mam następujące linie kodu:
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;
}
Próbowałem również:
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;
}
Ale co ja do, zawsze uzyskać wyjątek:
Koniec strumienia napotkanego przed zakończeniem przetwarzania
ADDITION: Właśnie zrobiłem kilka dodatkowych testów. Jeśli mam prosty obiekt, tylko kilka właściwości, działa dobrze. Używanie większego (dużego) złożonego obiektu, posiadającego inne obiekty, wyliczenia itp., Jest wtedy, gdy otrzymuję wyjątek.
ja już nie, nie pomaga, wciąż daje wyjątek. – royu