Delete a serialized binary save file

So I haven’t had much trouble creating and loading save data, but for some reason, I’m having a really hard time trying to delete it. I honestly don’t know the proper way to go about this. Right now I have to delete all the save files in order to free up any save slots. No one else seems to have this issue, or at least I haven’t seen anyone ask a question on this or create a tutorial. This is probably a dumb question, but any help would be great! Thank you!


This is the basic class I’m using.

[System.Serializable]
public class State
{
    public static State current;
    public string name;
    public int date;
    public int punkLevel;
    public int gamerLevel;
    public int raveLevel;
    public List<float> events = new List<float>();
    public bool bossDefeated;
}

This is the save/load file.

public static class SaveLoad
{
    public static List<State> savedGames = new List<State>();

    public static void Save()
    {
        savedGames.Add(State.current);
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Create(Path.Combine(Application.persistentDataPath, "/savedGames.sx"));
        bf.Serialize(file, SaveLoad.savedGames);
        file.Close();
    }

    public static void Load()
    {
        if(File.Exists(Path.Combine(Application.persistentDataPath, "/savedGames.sx")))
        {
            BinaryFormatter bf = new BinaryFormatter();
            FileStream file = File.Open(Path.Combine(Application.persistentDataPath, "/savedGames.sx"), FileMode.Open);
            SaveLoad.savedGames = (List<State>)bf.Deserialize(file);
            file.Close();
        }
    }
}

And this is how I’m deleting saves right now, which I’m sure is 100% the wrong way to go about it.

public void DeleteSave()
    {
        if(SaveLoad.savedGames[pos] != null)
        {
            //SaveLoad.savedGames.Clear();

            File.Delete(Path.Combine(Application.persistentDataPath, "/savedGames.sx"));

            PopulatePanels();
        }
    }

PopulatePanels just updates the information displayed on the save files. It takes information from SaveLoad.savedGames and displays it.

public static void SeriouslyDeleteAllSaveFiles()
{
string path = Application.persistentDataPath + “/saves/”;
DirectoryInfo directory = new DirectoryInfo(path);
directory.Delete(true);
Directory.CreateDirectory(path);
}
Here is a solution I found from this 1
Hope its helpful

I found this question when I had the same issue. I figured out how to target individual save files within the binary formatted save location:

// Selected equals the position of the game file saved, 0 is the first and they are numbered sequentially
    public static void DeleteFile(Int selected)
    {
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Open(Application.persistentDataPath + "/savedGames.save", FileMode.Open);
        Save_Load.savedGames.Remove(Save_Load.savedGames[selected]);
        bf.Serialize(file, Save_Load.savedGames);
        file.Close();
    }

@Vexing
The Quick and Easy Way to Delete a serialized binary save file:

public static void DeleteSaveData()
{
string path = Application.persistentDataPath + “/savedGames.sx”);
File.Delete(path);
}