using UnityEngine;
using System.Collections;
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class UserCachedInfoWRTool : MonoBehaviour {
private static string m_csFilePath = Application.persistentDataPath + "/*.dat";
public static void WriteUserDataToFile(CCachedUserInfo userCashedInfo){
using(FileStream fs = new FileStream(m_csFilePath, FileMode.Create, FileAccess.ReadWrite)){
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, userCashedInfo);
}
}
public static CCachedUserInfo ReadUserDataFromFile(){
CCachedUserInfo userData = null;
using(FileStream fs = new FileStream(m_csFilePath, FileMode.OpenOrCreate)){
if(0 != fs.Length){
BinaryFormatter bf = new BinaryFormatter();
userData = bf.Deserialize(fs) as CCachedUserInfo;
}
}
return userData;
}
using System.Collections;
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class UserCachedInfoWRTool : MonoBehaviour {
private static string m_csFilePath = Application.persistentDataPath + "/*.dat";
public static void WriteUserDataToFile(CCachedUserInfo userCashedInfo){
using(FileStream fs = new FileStream(m_csFilePath, FileMode.Create, FileAccess.ReadWrite)){
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, userCashedInfo);
}
}
public static CCachedUserInfo ReadUserDataFromFile(){
CCachedUserInfo userData = null;
using(FileStream fs = new FileStream(m_csFilePath, FileMode.OpenOrCreate)){
if(0 != fs.Length){
BinaryFormatter bf = new BinaryFormatter();
userData = bf.Deserialize(fs) as CCachedUserInfo;
}
}
return userData;
}
}
有点小bug,以后再改。
修改:由于当存储的数据出现破坏的时候,读取数据的时候会抛出异常,导致不能正常返回数据,所以做了一些修改:当数据异常,则重新创建数据。
public static CCachedUserInfo ReadUserDataFromFile(){
CCachedUserInfo userData = null;
FileStream fs = null;
try{
fs = new FileStream(m_csFilePath, FileMode.OpenOrCreate);
if(0 != fs.Length){
BinaryFormatter bf = new BinaryFormatter();
userData = bf.Deserialize(fs) as CCachedUserInfo;
}
}catch{
userData = null;
}finally{
if(null != fs){
fs.Close();
}
}
return userData;
}