52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using System.IO;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace SHH.CameraDashboard.Services
|
||
{
|
||
public static class StorageService
|
||
{
|
||
// 基础目录:C:\Users\Name\AppData\Local\SHH_Dashboard\
|
||
private static readonly string BaseDir = Path.Combine(
|
||
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
||
"SHH_CameraDashboard");
|
||
|
||
/// <summary>
|
||
/// 泛型保存:将数据 T 序列化为指定文件名的 JSON
|
||
/// </summary>
|
||
public static void Save<T>(T data, string fileName) where T : class
|
||
{
|
||
try
|
||
{
|
||
if (!Directory.Exists(BaseDir)) Directory.CreateDirectory(BaseDir);
|
||
|
||
string filePath = Path.Combine(BaseDir, fileName);
|
||
string json = JsonConvert.SerializeObject(data, Formatting.Indented);
|
||
File.WriteAllText(filePath, json);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($"存储失败 [{fileName}]: {ex.Message}");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 泛型读取:从指定 JSON 文件反序列化为数据 T
|
||
/// </summary>
|
||
public static T Load<T>(string fileName) where T : class, new()
|
||
{
|
||
try
|
||
{
|
||
string filePath = Path.Combine(BaseDir, fileName);
|
||
if (!File.Exists(filePath)) return new T();
|
||
|
||
string json = File.ReadAllText(filePath);
|
||
return JsonConvert.DeserializeObject<T>(json) ?? new T();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
System.Diagnostics.Debug.WriteLine($"读取失败 [{fileName}]: {ex.Message}");
|
||
return new T();
|
||
}
|
||
}
|
||
}
|
||
} |