Paths.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reflection;
  6. namespace WWPipeLine.Commons
  7. {
  8. public class Paths
  9. {
  10. public static string ApplicationExePath
  11. {
  12. get
  13. {
  14. string codeBase = Assembly.GetExecutingAssembly().Location;
  15. UriBuilder uri = new UriBuilder(codeBase);
  16. string path = Uri.UnescapeDataString(uri.Path);
  17. return Path.GetDirectoryName(path);
  18. }
  19. }
  20. /// <summary>
  21. /// AppLicfilePath
  22. /// </summary>
  23. public static string AppLicfilePath
  24. {
  25. get
  26. {
  27. var dir = Path.Combine(AppLocalLowPath, "Jxkd");
  28. if (!Directory.Exists(dir))
  29. Directory.CreateDirectory(dir);
  30. return dir + "//tmp.lic";
  31. }
  32. }
  33. public static string ApplicationPath
  34. {
  35. get
  36. {
  37. FileInfo f = new FileInfo(ApplicationExePath);
  38. return f.Directory.FullName;
  39. }
  40. }
  41. public static string ApplicationPy
  42. {
  43. get
  44. {
  45. FileInfo f = new FileInfo(ApplicationPath);
  46. return f.FullName + "/python36/python.exe";
  47. }
  48. }
  49. public static string ApplicationPythonScripts
  50. {
  51. get
  52. {
  53. return System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "scripts\\";
  54. }
  55. }
  56. public static string ApplicationBinDir
  57. {
  58. get
  59. {
  60. FileInfo f = new FileInfo(ApplicationExePath);
  61. return f.Directory.FullName;
  62. }
  63. }
  64. public static string ApplicationConfigDir
  65. {
  66. get
  67. {
  68. FileInfo f = new FileInfo(ApplicationPath);
  69. return f.FullName + "/configs";
  70. }
  71. }
  72. public static string ApplicationPluginsDir
  73. {
  74. get
  75. {
  76. FileInfo f = new FileInfo(ApplicationPath);
  77. return f.FullName + "/plugins";
  78. }
  79. }
  80. public static string ApplicationResourcesDir
  81. {
  82. get
  83. {
  84. FileInfo f = new FileInfo(ApplicationPath);
  85. return f.FullName + "\\resources";
  86. }
  87. }
  88. public static string ApplicationLogDir
  89. {
  90. get
  91. {
  92. FileInfo f = new FileInfo(ApplicationPath);
  93. return f.FullName + "\\logs";
  94. }
  95. }
  96. /// <summary>
  97. /// 临时文件路径
  98. /// </summary>
  99. public static string ApplicationTempResources
  100. {
  101. get
  102. {
  103. FileInfo f = new FileInfo(ApplicationPath);
  104. string path = f.FullName + "\\temp";
  105. if (!System.IO.Directory.Exists(path))
  106. {
  107. Directory.CreateDirectory(path);
  108. }
  109. return path;
  110. }
  111. }
  112. /// <summary>
  113. /// APPLow
  114. /// </summary>
  115. public static string AppLocalLowPath
  116. {
  117. get
  118. {
  119. return Path.Combine(Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)), "LocalLow");
  120. }
  121. }
  122. /// <summary>
  123. /// 系统帮助文档路径
  124. /// </summary>
  125. public static string ApplicationHelpDocument
  126. {
  127. get
  128. {
  129. FileInfo f = new FileInfo(ApplicationPath);
  130. return f.FullName + "\\document\\Help.pdf";
  131. }
  132. }
  133. internal class FileTimeInfo
  134. {
  135. public string FileName; //文件名
  136. public DateTime FileCreateTime; //创建时间
  137. public FileInfo FileInfo;
  138. }
  139. /// <summary>
  140. /// 获取目录下指定后缀的文件
  141. /// </summary>
  142. /// <param name="dir"></param>
  143. /// <param name="ext"></param>
  144. /// <returns></returns>
  145. public static List<FileInfo> FilesInDir(string dir,string ext)
  146. {
  147. List<FileInfo> list = new List<FileInfo>();
  148. DirectoryInfo d = new DirectoryInfo(dir);
  149. foreach (FileInfo fi in d.GetFiles())
  150. {
  151. if (string.IsNullOrEmpty(ext) || fi.Extension.ToUpper() == ext.ToUpper())
  152. {
  153. list.Add(fi);
  154. }
  155. }
  156. return list;
  157. }
  158. /// <summary>
  159. /// 获取某个路径下的最新文件
  160. /// </summary>
  161. /// <param name="dir"></param>
  162. /// <param name="ext"></param>
  163. /// <returns></returns>
  164. public static FileInfo FileInDirLastCreated(string dir,string ext,string extAnother = null)
  165. {
  166. if (!Directory.Exists(dir))
  167. {
  168. throw new FileNotFoundException(dir + " 未找到");
  169. }
  170. FileTimeInfo fi = GetLatestFileTimeInfo(dir, ext,extAnother);
  171. return new FileInfo(fi.FileName);
  172. }
  173. //获取最近创建的文件名和创建时间
  174.         //如果没有指定类型的文件,返回null
  175.         static FileTimeInfo GetLatestFileTimeInfo(string dir, string ext,string extAnother = null)
  176. {
  177. List<FileTimeInfo> list = new List<FileTimeInfo>();
  178. DirectoryInfo d = new DirectoryInfo(dir);
  179. foreach (FileInfo fi in d.GetFiles())
  180. {
  181. if (string.IsNullOrEmpty(ext) || fi.Extension.ToUpper() == ext.ToUpper())
  182. {
  183. list.Add(new FileTimeInfo()
  184. {
  185. FileName = fi.FullName,
  186. FileCreateTime = fi.CreationTime,
  187. FileInfo = fi
  188. });
  189. }
  190. }
  191. if(list.Count == 0)
  192. {
  193. foreach (FileInfo fi in d.GetFiles())
  194. {
  195. if (string.IsNullOrEmpty(extAnother) || fi.Extension.ToUpper() == extAnother.ToUpper())
  196. {
  197. list.Add(new FileTimeInfo()
  198. {
  199. FileName = fi.FullName,
  200. FileCreateTime = fi.CreationTime,
  201. FileInfo = fi
  202. });
  203. }
  204. }
  205. }
  206. var qry = from x in list
  207. orderby x.FileCreateTime
  208. select x;
  209. return qry.LastOrDefault();
  210. }
  211. public static void ClearFolder(string dir)
  212. {
  213. foreach (string d in Directory.GetFileSystemEntries(dir))
  214. {
  215. if (System.IO.File.Exists(d))
  216. {
  217. FileInfo fi = new FileInfo(d);
  218. if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
  219. fi.Attributes = FileAttributes.Normal;
  220. System.IO.File.Delete(d);//直接删除其中的文件
  221. }
  222. else
  223. {
  224. DirectoryInfo d1 = new DirectoryInfo(d);
  225. if (d1.GetFiles().Length != 0)
  226. {
  227. ClearFolder(d1.FullName);////递归删除子文件夹
  228. }
  229. Directory.Delete(d);
  230. }
  231. }
  232. }
  233. }
  234. }