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 } }