DatFileHandler.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using SWRIS.Core;
  2. using System;
  3. using System.IO;
  4. using System.Reflection;
  5. using System.Text.Json;
  6. namespace SWRIS.Extensions
  7. {
  8. public class DatFileHandler
  9. {
  10. [Obfuscation(Feature = "virtualization", Exclude = false)]
  11. public static bool CreateDatFile(string filePath, MemoryStream memoryData)
  12. {
  13. try
  14. {
  15. byte[] bytes = memoryData.ToArray();
  16. JsonCryptoHelper.EncryptToFile(bytes, filePath, ConfigHelper.AesKey, ConfigHelper.AesIV);
  17. return true;
  18. }
  19. catch (Exception ex)
  20. {
  21. LogHelper.Error($"创建JSON文件失败: {ex.Message}", ex);
  22. return false;
  23. }
  24. }
  25. public static (string absolutePath, string relativePath) GetDatFilePath(string serialNo)
  26. {
  27. return GetDateFilePath(AppDomain.CurrentDomain.BaseDirectory, serialNo);
  28. }
  29. [Obfuscation(Feature = "virtualization", Exclude = false)]
  30. public static byte[] ReadDatFile(string filePath)
  31. {
  32. filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, filePath);
  33. byte[] bytes = null;
  34. try
  35. {
  36. if (!File.Exists(filePath))
  37. {
  38. return bytes;
  39. }
  40. bytes = JsonCryptoHelper.DecryptFromFile<byte[]>(filePath, ConfigHelper.AesKey, ConfigHelper.AesIV);
  41. }
  42. catch (JsonException jsonEx)
  43. {
  44. LogHelper.Error($"JSON反序列化失败: {jsonEx.Message}", jsonEx);
  45. }
  46. catch (Exception ex)
  47. {
  48. LogHelper.Error($"读取文件失败: {ex.Message}", ex);
  49. }
  50. return bytes;
  51. }
  52. public static bool DeleteDatFile(string filePath)
  53. {
  54. try
  55. {
  56. if (!File.Exists(filePath))
  57. {
  58. return true;
  59. }
  60. File.Delete(filePath);
  61. }
  62. catch (Exception ex)
  63. {
  64. LogHelper.Error($"删除文件失败: {ex.Message}", ex);
  65. return false;
  66. }
  67. return true;
  68. }
  69. private static (string absolutePath, string relativePath) GetDateFilePath(string baseDirectory, string serialNo)
  70. {
  71. string relativeFolder = Path.Combine("Data", DateTime.Now.ToString("yyyy-MM-dd"));
  72. string absoluteFolder = Path.Combine(baseDirectory, relativeFolder);
  73. if (!Directory.Exists(absoluteFolder))
  74. {
  75. Directory.CreateDirectory(absoluteFolder);
  76. }
  77. string relativePath = Path.Combine(relativeFolder, $"{serialNo}-{DateTime.Now:yyyy-MM-dd HH-mm-ss}.dat");// 相对路径
  78. string absolutePath = Path.Combine(baseDirectory, relativePath);// 绝对路径
  79. return (absolutePath, relativePath);
  80. }
  81. }
  82. }