diff --git a/Utility/Data.cs.disable b/Utility/Data.cs.disable deleted file mode 100644 index e8ed830..0000000 --- a/Utility/Data.cs.disable +++ /dev/null @@ -1,43 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; -using Lagrange.Core.Common; - -namespace Shrink.Utility; - -public static class Data -{ - public static void SaveKeystore(BotKeystore keystore) => - File.WriteAllText("Keystore.json", JsonSerializer.Serialize(keystore)); - - public static BotDeviceInfo GetDeviceInfo() - { - if (File.Exists("DeviceInfo.json")) - { - var info = JsonSerializer.Deserialize(File.ReadAllText("DeviceInfo.json")); - if (info != null) return info; - - info = BotDeviceInfo.GenerateInfo(); - File.WriteAllText("DeviceInfo.json", JsonSerializer.Serialize(info)); - return info; - } - - var deviceInfo = BotDeviceInfo.GenerateInfo(); - File.WriteAllText("DeviceInfo.json", JsonSerializer.Serialize(deviceInfo)); - return deviceInfo; - } - public static BotKeystore? LoadKeystore() - { - try - { - var text = File.ReadAllText("Keystore.json"); - return JsonSerializer.Deserialize(text, new JsonSerializerOptions() - { - ReferenceHandler = ReferenceHandler.Preserve - }); - } - catch - { - return null; - } - } -} \ No newline at end of file diff --git a/Utility/JsonUtility.cs b/Utility/JsonUtility.cs new file mode 100644 index 0000000..0273af1 --- /dev/null +++ b/Utility/JsonUtility.cs @@ -0,0 +1,48 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Shrink.Utility; + +public static class JsonUtility +{ + public static void WriteJsonToFile(string filePath, T data) + { + try + { + var json = JsonSerializer.Serialize(data); + File.WriteAllText(filePath, json); + } + catch (Exception ex) + { + System.Console.WriteLine($"写入文件出错: {filePath}: {ex.Message}"); + throw; + } + } + + public static T ReadJsonFromFile(string filePath) + { + try + { + var json = File.ReadAllText(filePath); + return JsonSerializer.Deserialize(json, + new JsonSerializerOptions { ReferenceHandler = ReferenceHandler.Preserve })!; + } + catch (Exception ex) + { + System.Console.WriteLine($"读取文件出错: {filePath}: {ex.Message}"); + throw; + } + } + + public static T ReadOrCreateJsonFile(string filePath, Func createFunc) + { + if (File.Exists(filePath)) + { + return ReadJsonFromFile(filePath); + } + + var newData = createFunc(); + WriteJsonToFile(filePath, newData); + return newData; + } +} \ No newline at end of file