学习笔记:用C#编写遍历指定文件夹,并对所有文件进行处理的帮助方法,有更优方法欢迎交流

示例:需要删除指定文件夹下,超过10天的文件

方法使用:

      //参数1:job-需要操作的目录
      //参数2:lamda表达式,对文件的操作方法
      TraverseDirectory(job, (file) =>
      {
          if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-10))
          {
              File.Delete(file);
          }

      });

方法实现:

    /// <summary>
    /// 遍历指定文件夹,并对所有文件进行处理
    /// </summary>
    /// <param name="path"></param>需要处理的目录
    /// <param name="fileAction"></param>对每个文件的操作
    public static void TraverseDirectory(string path, Action<string> fileAction)
    {
        // 获取当前目录中的所有子目录
        string[] subDirectories = Directory.GetDirectories(path);

        foreach (string dir in subDirectories)
        {
            TraverseDirectory(dir, fileAction);
        }

        // 获取当前目录中的所有文件
        string[] files = Directory.GetFiles(path);

        foreach (string file in files)
        {
            try
            {
                fileAction?.Invoke(file);
            }
            catch
            { }
        }

        if (0 == Directory.GetFiles(path).Length && 0 == Directory.GetDirectories(path).Length)
        {
            try
            {
                Directory.Delete(path);
            }
            catch
            {

            }
        }
    }
}
posted @ 2025-12-31 10:35  轻敲C#  阅读(3)  评论(0)    收藏  举报