我有此代码:
public static void SaveData<T>(string filename,T playerData) where T : class
{
BinaryFormatter formatter = new BinaryFormatter();
filename = Application.persistentDataPath + "/" + filename;
using (var stream = File.OpenWrite(filename))
formatter.Serialize(stream,playerData);
}
public static T LoadData<T>(string filename) where T : class
{
filename = Application.persistentDataPath + "/" + filename;
if (File.Exists(filename))
{
BinaryFormatter formatter = new BinaryFormatter();
using (var stream = File.OpenRead(filename))
return formatter.Deserialize(stream) as T;
}
else
{
Debug.LogError("File not found...");
return null;
}
}
如您所见,我有2种静态方法用于序列化,反序列化任何类型的数据。 首先,我要序列化由newtonsoft.json lib创建的字符串(json):
var settings = new JsonSerializerSettings();
var json = JsonConvert.SerializeObject(Wevent,Formatting.None);
SaveData<string>(fileName,json);
但是,然后,我尝试将同一文件加载回去,我在这行上遇到了异常:
using (var stream = File.OpenWrite(filename))
formatter.Serialize(stream,playerData);
完整错误消息:
SerializationException:输入流不是有效的二进制格式。起始内容(以字节为单位)为:5B-0D-0A-20-20-7B-0D-0A-20-20-20-20-22-54-65-78-74