Load and Save doesnt work

So the code should save it in a file named Player.Info.dat but it doesnt work when i run the game again. It only saves as long as i keep the game running and return to the main menu and play again.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

//namespace System.Runtime.Serialization.Formatters.Binary;
using Newtonsoft.Json;
public class GameAnalytics : MonoBehaviour
    public Data stats;
    private Info info;

    private bool saved;

    public int enemies1Killed;
    public int enemies2Killed;
    public int enemies3Killed;

    private int playercounter;

    private GameObject player;
    void Start()

        enemies1Killed = enemies2Killed = enemies3Killed = 0;
        playercounter = 0;
        player = GameObject.FindWithTag("Player");


    void UpdateQ(){
        if (playercounter > 300){

    public void Begin(){
        //stats = Load();
        saved = false;

        if (stats.list.Count == 0){
            stats.list = new List<Info>();
            Debug.Log("no old data");
        } else{
            Debug.Log("Data is being collected");
            ScoreManager.scoreCount = stats.list[stats.list.Count - 1].score;
            Debug.Log("Begin Stats");
            Debug.Log(stats.list[stats.list.Count -1].placedLMG);
            Debug.Log(stats.list[stats.list.Count -1].placedCannon);
            Debug.Log("End Stats");

    public void saveStats(){
        if (saved == false){
            saved = true;

            info = new Info();
            info.score = ScoreManager.scoreCount;
            info.enemies1Killed = enemies1Killed;
            info.enemies2Killed = enemies2Killed;
            info.enemies3killed = enemies3Killed;
            info.lastround = GameObject.FindWithTag("Spawner").GetComponent<SpawnEnemies>().round;

            GameObject[] turrets = GameObject.FindGameObjectsWithTag("Turret");
            foreach (GameObject turr in turrets){
                if (turr.name == "Cannon"){
                if (turr.name == "LMG"){

    public void Save(Data saveData){
	if(File.Exists(Application.persistentDataPath + "/playerInfo.dat")){
		BinaryFormatter bfread = new BinaryFormatter();
		BinaryFormatter bfwrite = new BinaryFormatter();
		FileStream fileread = File.Open("file:" + Application.persistentDataPath + "/playerInfo.dat", FileMode.Open);
		Data dataread = (Data)bfread.Deserialize(fileread);
		Data datawrite = stats;
		bfwrite.Serialize(fileread, datawrite);
	} else{
		BinaryFormatter bf = new BinaryFormatter();
		FileStream file = File.Create(Application.persistentDataPath + "/playerInfo.dat");
		Data data = stats;
		bf.Serialize(file, data);

public void Load(){
	if(File.Exists(Application.persistentDataPath + "/playerInfo.dat")){
		BinaryFormatter bf = new BinaryFormatter();
		FileStream file = File.Open(Application.persistentDataPath + "/playerInfo.dat", FileMode.Open);
		Data data = (Data)bf.Deserialize(file);
        stats = data;
	} }


public class Data
 public List<Info> list;


public class Info

 public int score;

 public int lastround;

 public int enemies1Killed;

 public int enemies2Killed;

 public int enemies3killed;
 public int placedLMG;
 public int placedCannon;

 public List<Vector3> playerPositions = new List<Vector3>();