当前位置: 首页 > news >正文

C# 根据指定路径、文件格式、创建日期清理文件夹内文件,包括子目录

 

using System;
using System.Configuration;
using System.IO;

namespace CleanFile
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 删除曲线文件,测试可用
            //Console.Write("\n输入要操作的文件路径,回车结束!\n");
            DateTime dateNow = DateTime.Now;
            Console.WriteLine("清理开始:" + dateNow);
            //string folderPath = Console.ReadLine();//从控制台读入输入
            //DateTime targetDate = new DateTime(2023, 1, 1); // 设置目标日期(此处为2023年1月1日)
            DateTime targetDate = Convert.ToDateTime(ConfigurationManager.AppSettings["targetDate"].ToString()); // 设置目标日期(此处为2025年1月1日)
            string folderPath = ConfigurationManager.AppSettings["folderPath"].ToString();
            string fileExtension = ConfigurationManager.AppSettings["fileExtension"].ToString();
            DeleteFilesBeforeTargetDate(folderPath, targetDate, fileExtension);
            Console.WriteLine("清理完毕" + DateTime.Now + ",耗时:" + (DateTime.Now - dateNow).TotalSeconds + ",按回车退出!");
            Console.ReadLine();
            #endregion

            #region 移动曲线文件
            //if (args.Length == 0)
            //{
            //    Console.WriteLine("命令行参数不能为空...");
            //    Console.ReadKey();
            //    return;
            //}
            //string folder = args[0];
            //if (!Directory.Exists(folder))
            //{
            //    Console.WriteLine("输入的文件夹路径不存在...");
            //    Console.ReadKey();
            //    return;
            //}

            //Console.WriteLine("准备移动曲线文件...");

            //string[] subfolders = Directory.GetDirectories(folder);

            //int total = 0;
            //for (int i = 0; i < subfolders.Length; i++)
            //{
            //    string[] files = Directory.GetFiles(subfolders[i], "*.xml");
            //    total += files.Length;

            //    Console.WriteLine($"当前文件夹【{subfolders[i]}】内文件数有{files.Length}个.");

            //    foreach (var file in files)
            //    {
            //        string sub = File.GetLastWriteTime(file).ToString("yyyy-MM-dd");
            //        string filenames = Path.GetFileName(file);
            //        string foldr = Path.GetDirectoryName(file);
            //        string newfoldr = foldr + "\\" + sub;
            //        try
            //        {
            //            if (!Directory.Exists(newfoldr))
            //            {
            //                Directory.CreateDirectory(newfoldr);
            //            }
            //            File.Move(file, newfoldr + "\\" + filenames);
            //            Console.WriteLine($"文件【{file}】已经移到新路径{sub}.");
            //        }
            //        catch (Exception ex)
            //        {
            //            Console.WriteLine(ex);
            //        }
            //    }
            //}
            //Console.WriteLine($"移动曲线文件工作已完成,共移动{total}个文件.");

            //Console.ReadKey();
            #endregion

            #region 删除曲线文件,测试可用
            if (args.Length == 0)
            {
                Console.WriteLine("命令行参数不能为空...");
                Console.ReadKey();
                return;
            }
            string folder = args[0];

            //Console.Write("\n输入要操作的文件路径,回车结束!\n");
            //string folder = Console.ReadLine();//从控制台读入输入
            //if (!Directory.Exists(folder))
            //{
            //    Console.WriteLine("输入的文件夹路径不存在...");
            //    Console.ReadKey();
            //    return;
            //}

            //Console.WriteLine("准备删除曲线文件...");

            //string[] subfolders = Directory.GetDirectories(folder);//获取当前目录下所有子文件夹目录

            //int total = 0;
            //for (int i = 0; i < subfolders.Length; i++)//遍历子文件夹目录
            //{
            //    string[] files = Directory.GetFiles(subfolders[i], "*.xml");
            //    total += files.Length;

            //    Console.WriteLine($"当前文件夹【{subfolders[i]}】内文件数有{files.Length}个.");

            //    foreach (var file in files)
            //    {
            //        //string sub = File.GetLastWriteTime(file).ToString("yyyy-MM-dd");
            //        //string filenames = Path.GetFileName(file);
            //        //string foldr = Path.GetDirectoryName(file);
            //        //string newfoldr = foldr + "\\" + sub;
            //        try
            //        {
            //            //if (!Directory.Exists(newfoldr))
            //            //{
            //            //    Directory.CreateDirectory(newfoldr);
            //            //}
            //            //File.Move(file, newfoldr + "\\" + filenames);
            //            //Console.WriteLine($"文件【{file}】已经移到新路径{sub}.");


            //            DateTime TargetDate = new DateTime(2025, 1, 1); // 设置目标日期(此处为2025年1月1日)
            //            if(File.GetLastWriteTime(file)< TargetDate)
            //            {
            //                File.Delete(file);
            //                Console.WriteLine($"文件【{file}】已删除.");
            //            }
            //        }
            //        catch (Exception ex)
            //        {
            //            Console.WriteLine(ex);
            //        }
            //    }
            //}
            //Console.WriteLine($"移动曲线文件工作已完成,共移动{total}个文件.");
            //Console.ReadKey();
            #endregion
        }
        /// <summary>
        /// 删除指定路径中指定日期前的文件
        /// </summary>
        /// <param name="folderPath">指定路径</param>
        /// <param name="targetDate">指定日期</param>
        static void DeleteFilesBeforeTargetDate(string folderPath, DateTime targetDate, string fileExtension)
        {
            try
            {
                if (!Directory.Exists(folderPath))
                {
                    Console.WriteLine("输入的文件夹路径不存在...");
                    Console.ReadKey();
                    return;
                }

                DirectoryInfo directory = new DirectoryInfo(folderPath);

                foreach (var file in directory.EnumerateFiles())
                {
                    //if (file.LastWriteTime < targetDate && file.Extension == fileExtension)
                    Console.WriteLine($"文件【{file.FullName}】,LastWriteTime【{file.LastWriteTime}】,targetDate【{targetDate}】");
                    if (file.LastWriteTime < targetDate)
                    {
                        Console.WriteLine("DeleteFilesBeforeTargetDate:" + DateTime.Now);
                        File.Delete(file.FullName);
                        Console.WriteLine($"文件【{file.FullName}】已删除.");
                    }
                }

                foreach (var subdirectory in directory.EnumerateDirectories())
                {
                    DeleteFilesBeforeTargetDate(subdirectory.FullName, targetDate, fileExtension);
                }
            }catch(Exception ex)
            {
                Console.WriteLine($"发生异常【{ex.StackTrace.ToString()}】.");
            }
        }

    }
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
    </startup>
	<appSettings>
		<!--<add key="folderPath" value="G:\\test" />-->
		<add key="folderPath" value="D:\Mes\Curve Files" />
		<add key="fileExtension" value=".xml" />
		<add key="targetDate" value="2023/07/01" />
	</appSettings>
</configuration>

 

http://www.dtcms.com/a/122356.html

相关文章:

  • 从Transformer到世界模型:AGI核心架构演进
  • 微信小程序 -- 原生封装table
  • UV安装与使用
  • asp.net core 项目发布到 IIS 服务器
  • 场外期权只适合上涨行情吗?
  • CSS语言的游戏AI
  • ResNet改进(18):添加 CPCA通道先验卷积注意力机制
  • 从个人博客到电商中台:EdgeOne Pages的MCP Server弹性架构×DeepSeek多场景模板实战解析
  • 1.VTK 使用CMakeLists
  • Linux 编程中的 I/O 复用
  • Element UI 设置 el-table-column 宽度 width 为百分比无效
  • React九案例中
  • 敏捷迭代实战经验分享
  • leetcode_数组 189. 轮转数组
  • Odrive0.5.1-FOC电机控制 arm_cos_f32.cpp arm_sin_f32.cpp代码实现(一)
  • 中科岩创基坑自动化监测解决方案
  • 【11】数据结构之基于线性表的查找算法
  • 【消息队列kafka_中间件】一、快速入门分布式消息队列
  • Android 中Intent 相关问题
  • STM32CubeMX-H7-12-IIC读写MPU6050模块(中)-MPU6050模块详解以及软件IIC驱动
  • Node.js是js语言在服务器编译运行的环境,什么是IP和域名
  • Python包管理工具uv简单使用
  • nginx或tengine服务器,配置HTTPS下使用WebSocket的线上环境实践!
  • 【详细】MySQL 8 安装解压即用 (包含MySQL 5 卸载)
  • Python从入门到精通全套视频教程免费
  • UniApp基于xe-upload实现文件上传组件
  • 12. git merge
  • 【LeetCode 题解】数据库:1321.餐馆营业额变化增长
  • 使用RabbitMQ实现异步秒杀
  • 网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者