Sto tentando di deserializzare un oggetto che ho salvato in un file (con formattatore binario). Qualunque cosa provo, ottengo l'eccezione: interruzione del flusso incontrato prima analisi è stata completatadeserialize del formatter: End of Stream rilevato prima del parsing completato
ho le seguenti righe di codice:
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;
}
Ho anche provato:
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;
}
Ma qualunque cosa io fare, ottenere sempre l'eccezione:
La fine del flusso rilevato prima dell'analisi è stata completata
AGGIUNTA: Ho appena effettuato alcuni test aggiuntivi. Se ho un oggetto semplice, solo alcune proprietà, funziona perfettamente. Usando un oggetto più grande (più grande), avendo altri oggetti, enumerati, ecc. Incapsulati, è allora che ottengo l'eccezione.
ho già fatto, non aiuta, dà ancora l'eccezione. – royu