根据时间删除指定文件夹下的文件
1.获取文件夹路径
2.定义一个计时器
3.定义锁
4.删除符合规则的文件
5.解锁
/// <summary> /// 根据时间来删除指定文件夹下的文件 /// </summary> class Program { #region 私有静态字段定义 private static string _directoryPath; private static readonly object Lock = new object(); private static Timer timer; #endregion #region 主方法 static void Main(string[] args) { // 获取文件夹路径 _directoryPath = GetDirectoryPath(); timer = new Timer(10); timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); timer.Start(); Console.Read(); } #endregion #region 私有静态方法 /// <summary> /// 获取文件夹路径 /// </summary> /// <returns></returns> private static string GetDirectoryPath() { // 获取当前基目录 string baseDirectory = System.AppDomain.CurrentDomain.BaseDirectory; // 使用appdomain获取当前应用程序集的执行目录 string dir = AppDomain.CurrentDomain.BaseDirectory; // 使用path获取当前应用程序集的执行目录的上级的上级目录 dir = Path.GetFullPath("../.."); //Console.WriteLine("dir:" + dir); string imgDirPath = string.Format(@"{0}\\{1}", dir, "imgs"); return imgDirPath; } static void timer_Elapsed(object sender, ElapsedEventArgs e) { // 执行完删除操作后解锁 lock (Lock) { DeleteFile(_directoryPath); } } /// <summary> /// 删除文件夹下符合规则的文件。 /// </summary> /// <param name="directoryPath">文件夹路径</param> private static void DeleteFile(string directoryPath) {// 获取指定目录下的文件集合 var files = GetFilePaths(); // 获取当前日期月份 var currentMonth = DateTime.Now.Month; var filePaths = new List<string>(); foreach (var file in files) { // 获取文件的创建时间 var creationTime = File.GetCreationTime(file); //var lastWriteTime = File.GetCreationTime(file); // 如果是一个月之前的数据 if (creationTime.Month <= currentMonth - 1) { // 删除该文件 File.Delete(file); Console.WriteLine("删除文件:" + file); } } } /// <summary> /// 根据文件夹路径取的文件名称集合。 /// </summary> /// <param name="directoryPath"></param> /// <returns></returns> private static string[] GetFilePaths() { return Directory.GetFiles(_directoryPath); } #endregion }
一分辛苦一分才