0
0

FileSize.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using Admin.Core.Common.Extensions;
  2. namespace Admin.Core.Common.Files
  3. {
  4. /// <summary>
  5. /// 文件大小
  6. /// </summary>
  7. public struct FileSize
  8. {
  9. /// <summary>
  10. /// 初始化文件大小
  11. /// </summary>
  12. /// <param name="size">文件大小</param>
  13. /// <param name="unit">文件大小单位</param>
  14. public FileSize(long size, FileSizeUnit unit = FileSizeUnit.Byte)
  15. {
  16. switch (unit)
  17. {
  18. case FileSizeUnit.K:
  19. Size = size * 1024; break;
  20. case FileSizeUnit.M:
  21. Size = size * 1024 * 1024; break;
  22. case FileSizeUnit.G:
  23. Size = size * 1024 * 1024 * 1024; break;
  24. default:
  25. Size = size; break;
  26. }
  27. }
  28. /// <summary>
  29. /// 文件字节长度
  30. /// </summary>
  31. public long Size { get; }
  32. /// <summary>
  33. /// 获取文件大小,单位:字节
  34. /// </summary>
  35. public long GetSize()
  36. {
  37. return Size;
  38. }
  39. /// <summary>
  40. /// 获取文件大小,单位:K
  41. /// </summary>
  42. public double GetSizeByK()
  43. {
  44. return (Size / 1024.0).ToDouble(2);
  45. }
  46. /// <summary>
  47. /// 获取文件大小,单位:M
  48. /// </summary>
  49. public double GetSizeByM()
  50. {
  51. return (Size / 1024.0 / 1024.0).ToDouble(2);
  52. }
  53. /// <summary>
  54. /// 获取文件大小,单位:G
  55. /// </summary>
  56. public double GetSizeByG()
  57. {
  58. return (Size / 1024.0 / 1024.0 / 1024.0).ToDouble(2);
  59. }
  60. /// <summary>
  61. /// 输出描述
  62. /// </summary>
  63. public override string ToString()
  64. {
  65. if (Size >= 1024 * 1024 * 1024)
  66. return $"{GetSizeByG()} {FileSizeUnit.G.ToDescription()}";
  67. if (Size >= 1024 * 1024)
  68. return $"{GetSizeByM()} {FileSizeUnit.M.ToDescription()}";
  69. if (Size >= 1024)
  70. return $"{GetSizeByK()} {FileSizeUnit.K.ToDescription()}";
  71. return $"{Size} {FileSizeUnit.Byte.ToDescription()}";
  72. }
  73. }
  74. }