学习笔记:用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
{
}
}
}
}

浙公网安备 33010602011771号