A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

转自:http://www.jb51.net/article/46334.htm
这篇文章主要介绍了c#目录操作示例,包括获取目录名称、获取子目录、查询子目录、将原目录移动到目标目录等操作,大家参考使用吧

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. namespace Humep.FileWatcher
  7. {
  8. /// <summary>
  9. ///
  10. /// </summary>
  11. public static class DirectoryHelper
  12. {
  13. /// <summary>
  14. /// 初始化目录
  15. /// </summary>
  16. /// <param name="directory"></param>
  17. /// <returns></returns>
  18. public static bool CreateDirectory(string directory)
  19. {
  20. if (string.IsNullOrWhiteSpace(directory))
  21. {
  22. return false;
  23. }
  24. if (Directory.Exists(directory))
  25. {
  26. return true;
  27. }
  28. var dirInfo = Directory.CreateDirectory(directory);
  29. return dirInfo != null;
  30. }

  31. /// <summary>
  32. /// 根据当前日组合文件夹名称
  33. /// </summary>
  34. /// <param name="now"></param>
  35. /// <returns></returns>
  36. public static string BuildDateDirectoryName(DateTime dateTime)
  37. {
  38. return dateTime.ToString("yyyyMMdd");
  39. }
  40. /// <summary>
  41. ///
  42. /// </summary>
  43. /// <returns></returns>
  44. public static string BuildTodayDirectoryName()
  45. {
  46. return BuildDateDirectoryName(DateTime.Now);
  47. }
  48. /// <summary>
  49. /// 获取目录名称
  50. /// </summary>
  51. /// <param name="directory"></param>
  52. /// <returns></returns>
  53. public static string GetDirectoryName(string directory)
  54. {
  55. if (!Directory.Exists(directory))
  56. {
  57. return string.Empty ;// DirectoryHelper.CreateDirectory(directory);
  58. }
  59. return new DirectoryInfo(directory).Name;
  60. }
  61. /// <summary>
  62. /// 获取目录文件夹下的所有子目录
  63. /// </summary>
  64. /// <param name="directory"></param>
  65. /// <param name="filePattern"></param>
  66. /// <returns></returns>
  67. public static List<string> FindSubDirectories(string directory, int maxCount)
  68. {
  69. List<string> subDirectories = new List<string>();
  70. if (string.IsNullOrEmpty(directory))
  71. {
  72. return subDirectories;
  73. }
  74. if (maxCount <= 0)
  75. {
  76. return subDirectories;
  77. }
  78. string[] directories = Directory.GetDirectories(directory);
  79. foreach (string subDirectory in directories)
  80. {
  81. if (subDirectories.Count == maxCount)
  82. {
  83. break;
  84. }
  85. subDirectories.Add(subDirectory);
  86. }
  87. return subDirectories;
  88. }
  89. public static List<string> FindSubDirectories(string directory)
  90. {
  91. return Directory.GetDirectories(directory, "*", SearchOption.AllDirectories).ToList<string>();
  92. }
  93. /// <summary>
  94. /// 根据时间查询子目录
  95. /// </summary>
  96. /// <param name="directory"></param>
  97. /// <param name="maxCount"></param>
  98. /// <returns></returns>
  99. public static List<string> FindSubDirectories(string directory, int maxCount, int days)
  100. {
  101. List<string> subDirectories = new List<string>();
  102. if (string.IsNullOrEmpty(directory))
  103. {
  104. return subDirectories;
  105. }
  106. if (maxCount <= 0)
  107. {
  108. return subDirectories;
  109. }
  110. string[] directories = Directory.GetDirectories(directory);
  111. DateTime lastTime = DateTime.Now.AddDays(-Math.Abs(days));
  112. foreach (string subDirectory in directories)
  113. {
  114. if (subDirectories.Count == maxCount)
  115. {
  116. break;
  117. }
  118. DirectoryInfo dirInfo = new DirectoryInfo(subDirectory);
  119. if (dirInfo.LastWriteTime >= lastTime)
  120. {
  121. subDirectories.Add(subDirectory);
  122. }
  123. }
  124. return subDirectories;
  125. }
  126. /// <summary>
  127. /// 将原目录移动到目标目录
  128. /// </summary>
  129. /// <param name="sourceDirectory"></param>
  130. /// <param name="targetDirectory"></param>
  131. /// <returns></returns>
  132. public static bool MoveDirectory(string sourceDirectory, string targetDirectory)
  133. {
  134. if (string.IsNullOrEmpty(sourceDirectory) || string.IsNullOrEmpty(targetDirectory))
  135. {
  136. return false;
  137. }
  138. string laseMoveDirectory = string.Format("{0}\\{1}", targetDirectory, DirectoryHelper.GetDirectoryName(sourceDirectory));
  139. while (Directory.Exists(laseMoveDirectory))
  140. {
  141. laseMoveDirectory = DirectoryHelper.Rename(laseMoveDirectory);
  142. }
  143. Directory.Move(sourceDirectory, laseMoveDirectory);
  144. return true;
  145. }
  146. /// <summary>
  147. /// 重新生成新的文件路径
  148. /// </summary>
  149. /// <param name="filePath"></param>
  150. /// <returns></returns>
  151. public static string Rename(string filePath)
  152. {
  153. if (string.IsNullOrWhiteSpace(filePath))
  154. {
  155. return string.Empty;
  156. }
  157. string lastDirName = DirectoryHelper.GetDirectoryName(filePath);
  158. //重命名,则随机在原来文件名后面加几个随机数字进行组装成新的名字
  159. Random random = new Random(System.DateTime.Now.Millisecond);
  160. string randomData = random.Next().ToString();
  161. //把原文件名的名字加上随机数,组装成新的文件名(避免重名)
  162. string newlastDirName = lastDirName + randomData;
  163. string newDirPath = string.Empty;
  164. newDirPath = filePath.Substring(0, filePath.LastIndexOf("\\")) + "\\" + newlastDirName;
  165. //返回新的路径
  166. return newDirPath;
  167. }
  168. /// <summary>
  169. /// 获取指定目录下的所有文件和文件夹大小
  170. /// </summary>
  171. /// <param name="path">目录路径</param>
  172. /// <returns>string,返回所有文件夹名字</returns>
  173. public static long GetDirectorySize(string path)
  174. {
  175. long dirSize = 0;
  176. DirectoryInfo dir = new DirectoryInfo(path);
  177. foreach (FileInfo file in dir.GetFiles())
  178. dirSize += file.Length;
  179. foreach (DirectoryInfo subdir in dir.GetDirectories())
  180. dirSize += GetDirectorySize(subdir.FullName);
  181. return dirSize;
  182. }
  183. }
  184. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马