ValidateFileName.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Runtime.CompilerServices;
  5. using Microsoft.VisualBasic.CompilerServices;
  6. namespace PCL
  7. {
  8. // Token: 0x0200014B RID: 331
  9. public class ValidateFileName : Validate
  10. {
  11. // Token: 0x17000214 RID: 532
  12. // (get) Token: 0x06000D9D RID: 3485 RVA: 0x00008B6A File Offset: 0x00006D6A
  13. // (set) Token: 0x06000D9E RID: 3486 RVA: 0x00008B72 File Offset: 0x00006D72
  14. public string Name { get; set; }
  15. // Token: 0x17000215 RID: 533
  16. // (get) Token: 0x06000D9F RID: 3487 RVA: 0x00008B7B File Offset: 0x00006D7B
  17. // (set) Token: 0x06000DA0 RID: 3488 RVA: 0x00008B83 File Offset: 0x00006D83
  18. public bool UseMinecraftCharCheck { get; set; }
  19. // Token: 0x06000DA1 RID: 3489 RVA: 0x00008B8C File Offset: 0x00006D8C
  20. [CompilerGenerated]
  21. public bool DeleteClient()
  22. {
  23. return this.m_ValTests;
  24. }
  25. // Token: 0x06000DA2 RID: 3490 RVA: 0x00008B94 File Offset: 0x00006D94
  26. [CompilerGenerated]
  27. public void ValidateClient(bool AutoPropertyValue)
  28. {
  29. this.m_ValTests = AutoPropertyValue;
  30. }
  31. // Token: 0x06000DA3 RID: 3491 RVA: 0x00008B9D File Offset: 0x00006D9D
  32. [CompilerGenerated]
  33. public string GetClient()
  34. {
  35. return this._AttrTests;
  36. }
  37. // Token: 0x06000DA4 RID: 3492 RVA: 0x00008BA5 File Offset: 0x00006DA5
  38. [CompilerGenerated]
  39. public void FindClient(string AutoPropertyValue)
  40. {
  41. this._AttrTests = AutoPropertyValue;
  42. }
  43. // Token: 0x17000216 RID: 534
  44. // (get) Token: 0x06000DA5 RID: 3493 RVA: 0x00008BAE File Offset: 0x00006DAE
  45. // (set) Token: 0x06000DA6 RID: 3494 RVA: 0x00008BB6 File Offset: 0x00006DB6
  46. public object RequireParentFolderExists
  47. {
  48. [CompilerGenerated]
  49. get
  50. {
  51. return this._CandidateTests;
  52. }
  53. [CompilerGenerated]
  54. set
  55. {
  56. this._CandidateTests = RuntimeHelpers.GetObjectValue(value);
  57. }
  58. }
  59. // Token: 0x06000DA7 RID: 3495 RVA: 0x00008BC4 File Offset: 0x00006DC4
  60. public ValidateFileName()
  61. {
  62. this.UseMinecraftCharCheck = true;
  63. this.ValidateClient(true);
  64. this.FindClient(null);
  65. this.RequireParentFolderExists = true;
  66. }
  67. // Token: 0x06000DA8 RID: 3496 RVA: 0x00008BEE File Offset: 0x00006DEE
  68. public ValidateFileName(string Name, bool UseMinecraftCharCheck = true, bool IgnoreCase = true)
  69. {
  70. this.UseMinecraftCharCheck = true;
  71. this.ValidateClient(true);
  72. this.FindClient(null);
  73. this.RequireParentFolderExists = true;
  74. this.Name = Name;
  75. this.ValidateClient(IgnoreCase);
  76. this.UseMinecraftCharCheck = UseMinecraftCharCheck;
  77. }
  78. // Token: 0x06000DA9 RID: 3497 RVA: 0x0005BFE4 File Offset: 0x0005A1E4
  79. public override string Validate(string Str)
  80. {
  81. string result;
  82. try
  83. {
  84. string text = new ValidateNullOrWhiteSpace().Validate(Str);
  85. if (Operators.CompareString(text, "", false) != 0)
  86. {
  87. result = text;
  88. }
  89. else if (Str.StartsWithF(" ", false))
  90. {
  91. result = "文件名不能以空格开头!";
  92. }
  93. else if (Str.EndsWithF(" ", false))
  94. {
  95. result = "文件名不能以空格结尾!";
  96. }
  97. else
  98. {
  99. text = new ValidateLength(1, 253).Validate(Str + this.GetClient());
  100. if (Operators.CompareString(text, "", false) != 0)
  101. {
  102. result = text;
  103. }
  104. else if (Str.EndsWithF(".", false))
  105. {
  106. result = "文件名不能以小数点结尾!";
  107. }
  108. else
  109. {
  110. string text2 = new ValidateExcept(new string(Path.GetInvalidFileNameChars()) + (this.UseMinecraftCharCheck ? "!;" : ""), "文件名不可包含 % 字符!").Validate(Str);
  111. if (Operators.CompareString(text2, "", false) != 0)
  112. {
  113. result = text2;
  114. }
  115. else
  116. {
  117. string text3 = new ValidateExceptSame(new string[]
  118. {
  119. "CON",
  120. "PRN",
  121. "AUX",
  122. "CLOCK$",
  123. "NUL",
  124. "COM0",
  125. "COM1",
  126. "COM2",
  127. "COM3",
  128. "COM4",
  129. "COM5",
  130. "COM6",
  131. "COM7",
  132. "COM8",
  133. "COM9",
  134. "LPT0",
  135. "LPT1",
  136. "LPT2",
  137. "LPT3",
  138. "LPT4",
  139. "LPT5",
  140. "LPT6",
  141. "LPT7",
  142. "LPT8",
  143. "LPT9"
  144. }, "文件名不可为 %!", true).Validate(Str);
  145. if (Operators.CompareString(text3, "", false) != 0)
  146. {
  147. result = text3;
  148. }
  149. else if (ModBase.RegexCheck(Str, ".{2,}~\\d", 0))
  150. {
  151. result = "文件名不能包含这一特殊格式!";
  152. }
  153. else
  154. {
  155. if (this.GetClient() != null)
  156. {
  157. DirectoryInfo directoryInfo = new DirectoryInfo(this.GetClient());
  158. if (directoryInfo.Exists)
  159. {
  160. string text4 = new ValidateExceptSame(Enumerable.Select<FileInfo, string>(directoryInfo.EnumerateFiles("*"), (ValidateFileName._Closure$__.$I22-0 == null) ? (ValidateFileName._Closure$__.$I22-0 = ((FileInfo f) => f.Name)) : ValidateFileName._Closure$__.$I22-0), "不可与现有文件重名!", this.DeleteClient()).Validate(Str);
  161. if (Operators.CompareString(text4, "", false) != 0)
  162. {
  163. return text4;
  164. }
  165. }
  166. else if (Conversions.ToBoolean(this.RequireParentFolderExists))
  167. {
  168. return string.Format("父文件夹不存在:{0}", this.GetClient());
  169. }
  170. }
  171. result = "";
  172. }
  173. }
  174. }
  175. }
  176. }
  177. catch (Exception ex)
  178. {
  179. ModBase.Log(ex, "检查文件名出错", ModBase.LogLevel.Debug, "出现错误");
  180. result = "错误:" + ex.Message;
  181. }
  182. return result;
  183. }
  184. // Token: 0x04000714 RID: 1812
  185. [CompilerGenerated]
  186. private string m_StructTests;
  187. // Token: 0x04000715 RID: 1813
  188. [CompilerGenerated]
  189. private bool _PrinterTests;
  190. // Token: 0x04000716 RID: 1814
  191. [CompilerGenerated]
  192. private bool m_ValTests;
  193. // Token: 0x04000717 RID: 1815
  194. [CompilerGenerated]
  195. private string _AttrTests;
  196. // Token: 0x04000718 RID: 1816
  197. [CompilerGenerated]
  198. private object _CandidateTests;
  199. }
  200. }