FileInfo.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using System.Runtime.InteropServices;
  8. namespace GameFramework.FileSystem
  9. {
  10. /// <summary>
  11. /// 文件信息。
  12. /// </summary>
  13. [StructLayout(LayoutKind.Auto)]
  14. public struct FileInfo
  15. {
  16. private readonly string m_Name;
  17. private readonly long m_Offset;
  18. private readonly int m_Length;
  19. /// <summary>
  20. /// 初始化文件信息的新实例。
  21. /// </summary>
  22. /// <param name="name">文件名称。</param>
  23. /// <param name="offset">文件偏移。</param>
  24. /// <param name="length">文件长度。</param>
  25. public FileInfo(string name, long offset, int length)
  26. {
  27. if (string.IsNullOrEmpty(name))
  28. {
  29. throw new GameFrameworkException("Name is invalid.");
  30. }
  31. if (offset < 0L)
  32. {
  33. throw new GameFrameworkException("Offset is invalid.");
  34. }
  35. if (length < 0)
  36. {
  37. throw new GameFrameworkException("Length is invalid.");
  38. }
  39. m_Name = name;
  40. m_Offset = offset;
  41. m_Length = length;
  42. }
  43. /// <summary>
  44. /// 获取文件信息是否有效。
  45. /// </summary>
  46. public bool IsValid
  47. {
  48. get
  49. {
  50. return !string.IsNullOrEmpty(m_Name) && m_Offset >= 0L && m_Length >= 0;
  51. }
  52. }
  53. /// <summary>
  54. /// 获取文件名称。
  55. /// </summary>
  56. public string Name
  57. {
  58. get
  59. {
  60. return m_Name;
  61. }
  62. }
  63. /// <summary>
  64. /// 获取文件偏移。
  65. /// </summary>
  66. public long Offset
  67. {
  68. get
  69. {
  70. return m_Offset;
  71. }
  72. }
  73. /// <summary>
  74. /// 获取文件长度。
  75. /// </summary>
  76. public int Length
  77. {
  78. get
  79. {
  80. return m_Length;
  81. }
  82. }
  83. }
  84. }