using System;
using System.IO;
using System.Text;
using UnityEngine;
namespace MuHua
{
public static class SaveTool
{
/// 默认扩展名
public const string EXTENSION = "Json";
/// 各平台本地保存路径
public static string PATH
{
#if UNITY_IOS
get { return Application.persistentDataPath;}
#elif UNITY_ANDROID
get { return Application.persistentDataPath;}
#else
get { return Application.streamingAssetsPath; }
#endif
}
#region 字符串保存
/// 保存字符串到本地文件夹
/// 文件夹
/// 文件名
/// 保存内容
public static void SaveText(string directory, string fileName, string saveString)
{
string filePath = directory + fileName;
if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); }
File.WriteAllText(filePath, saveString);
}
/// 读取文件返回字符串
/// 文件路径
/// 读取内容
public static string LoadText(string filePath)
{
if (File.Exists(filePath)) { return File.ReadAllText(filePath); }
else { return null; }
}
#endregion
#region 编码字符串保存
/// 保存编码字符串到本地文件夹
/// 文件夹
/// 文件名
/// 保存内容
public static void SaveEncodingString(string directory, string fileName, string saveString, Encoding encodeType)
{
string filePath = directory + fileName;
if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); }
byte[] byteArray = encodeType.GetBytes(saveString);
string base64 = Convert.ToBase64String(byteArray);
File.WriteAllText(filePath, base64);
}
/// 读取编码文件返回字符串
/// 文件路径
/// 读取内容
public static string LoadEncodingString(string filePath, Encoding encodeType)
{
if (File.Exists(filePath))
{
string base64 = File.ReadAllText(filePath);
byte[] byteArray = Convert.FromBase64String(base64);
return encodeType.GetString(byteArray);
}
else { return null; }
}
#endregion
#region 对象转Json的保存与加载
/// 保存Object为Json文件
/// 文件夹
/// 文件名
/// 保存数据类
public static void SaveObjectToJson(string directory, string fileName, TSaveObject saveObject)
{
SaveText(directory, fileName, JsonTool.ToJson(saveObject));
}
/// 加载Class
/// 读取的类型
/// 文件路径
/// 读取数据类
public static TSaveObject LoadJsonToObject(string filePath)
{
string json = LoadText(filePath);
if (json != null) { return JsonTool.FromJson(json); }
else { return default(TSaveObject); }
}
#endregion
#region 对象Encoding的保存与加载
/// 编码保存Object
/// 文件夹
/// 文件名
/// 保存数据类
/// 编码类型
public static void SaveEncodingObject(string directory, string fileName, TSaveObject saveObject, Encoding encodeType)
{
SaveEncodingString(directory, fileName, JsonTool.ToJson(saveObject), encodeType);
}
/// 加载编码Object
/// 读取的类型
/// 文件路径
/// 编码类型
/// 读取数据类
public static TSaveObject LoadEncodingObject(string filePath, Encoding encodeType)
{
string json = LoadEncodingString(filePath, encodeType);
if (json != null) { return JsonTool.FromJson(json); }
else { return default(TSaveObject); }
}
#endregion
}
}