Error when loading saved date : SerializationException: End of Stream encountered before parsing was completed.

Hello, I have made a save/load system, it worked perfectly until now, but now it shows me this error. I haven’t touched anything in the code. Could you please help me ?

The error :

SerializationException: End of Stream encountered before parsing was completed.
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run () (at <567df3e0919241ba98db88bec4c6696f>:0)
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) (at <567df3e0919241ba98db88bec4c6696f>:0)
SaveSystem.LoadData () (at Assets/Scripts/Save-Load/SaveSystem.cs:29)

My code :

using UnityEngine;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

public static class SaveSystem
{
    public static void SaveData(DataStorage dataStorage)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        string path = Path.Combine(Application.persistentDataPath, "storedData.dat");

        using (FileStream stream = File.Create(path))
        {
            PlayerData data = new PlayerData(dataStorage);
            formatter.Serialize(stream, data);
        }

    }

    public static PlayerData LoadData()
    {
        string path = Path.Combine(Application.persistentDataPath, "storedData.dat");

        if (File.Exists(path))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            using (FileStream stream = File.Open(path,FileMode.Open))
            {
                PlayerData data = formatter.Deserialize(stream) as PlayerData;
                return data;
            }
            
        }

        else
        {
            Debug.LogError("Save file not found in " + path);
            return null;
        }
    }
}

It’s likely that the saved file was corrupted by your game quitting before it was saved.

SerializationException: End of Stream encountered before parsing was completed.

means that the file was not able to be read to the end.

The only thing you can do is add try/catch block around the decoding block, and display a reasonable part of those errors to the user.

Thanks a lot for quick answer !
I just figured it out after reading your message, my error was that I was trying to serialize a Sprite, I just replaced it with an ID system and it works perfectly !!!