这个例子是使用的序列化器是BinaryFormatter效率会比较低建议使用messagepack
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Program program = new Program();
PlayerData playerData = new PlayerData { name =" 张三",Level=114514,Health=1919 };
program.SavePlayerData(playerData);
Console.WriteLine("写入完成");
PlayerData newplayerData= program.LoadPlayerData();
Console.WriteLine($"读取的名为:{newplayerData.name}");
Console.ReadKey();
}
public void SavePlayerData(PlayerData data)
{
BinaryFormatter formatter = new BinaryFormatter();//创建序列化器
string path = Path.Combine("文件的绝对路径");
using (FileStream stream = new FileStream(path, FileMode.Create))//创建流
{
formatter.Serialize(stream, data);//写入
}
}
public PlayerData LoadPlayerData()
{
string path = Path.Combine("文件的绝对路径");
if (File.Exists(path))//验证文件是否存在
{
BinaryFormatter formatter = new BinaryFormatter();//创建序列化器
using (FileStream stream = new FileStream(path, FileMode.Open))//创建流
{
return formatter.Deserialize(stream) as PlayerData;//读取
}
}
else
{
return null;
}
}
}
class PlayerData
{
public int Level;
public float Health;
public string name;
}
}