将文件反序列化为对象
/// <summary>
/// 将文件反序列化为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="saveKey"></param>
/// <param name="appRoot"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static T BinaryDeserializeObject<T>(string saveKey, string appRoot, T defaultValue)
{
string[] fileArgs = saveKey.Split('.');
string filepath = Path.Combine(appRoot, string.Join(@"\", fileArgs) + ".dat");
BinaryFormatter formatter = new BinaryFormatter();
T myObject;
try
{
using (FileStream myFileStream = new FileStream(filepath, FileMode.Open))
{
myObject = (T)formatter.Deserialize(myFileStream);
}
}
catch
{
if (!File.Exists(filepath))
{
if (!Directory.Exists(Path.GetDirectoryName(filepath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(filepath));
}
}
BinarySerializeObject(saveKey, appRoot,defaultValue);
using (FileStream myFileStream = new FileStream(filepath, FileMode.Open))
{
myObject = (T)formatter.Deserialize(myFileStream);
}
}
return myObject;
}
/// <summary>
/// 将对象序列化为文件
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="saveKey"></param>
/// <param name="appRoot"></param>
/// <param name="t"></param>
public static void BinarySerializeObject<T>(string saveKey, string appRoot, T t)
{
string[] fileArgs = saveKey.Split('.');
string filepath = Path.Combine(appRoot, string.Join(@"\", fileArgs) + ".dat");
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream myWriter = new FileStream(filepath, FileMode.OpenOrCreate))
{
formatter.Serialize(myWriter, t);
myWriter.Close();
}
}
浙公网安备 33010602011771号