我有一个C#应用程序,其中要求删除创建日期早于今天日期的所有文件。我们怎样才能做到这一点?
我在谷歌搜索了一个示例代码。所以我决定创建一个并在此处发布。如果要从目录中删除旧文件,可以使用以下方法。如果您对此有任何疑问,请告诉我,我很乐意为您提供帮助。
public void FolderDelete()
{
DirectoryInfo d = new DirectoryInfo(ConfigurationManager.AppSettings["<path>"]);
if (d.Exists)
{
//Get all Directories from the path
string[] folders = Directory.GetDirectories(d.ToString());
foreach (var item in folders)
{
DirectoryInfo info = new DirectoryInfo(item);
//It will purge the 14 days older directories
if (info.CreationTime < DateTime.Now.AddDays(-14))
{
info.Delete(true);
}
}
}
else
{
Console.WriteLine("There is no 14 days older files.");
}
}
这非常有用且易于使用。我已经尝试了上述方法。你们中的任何一个人都有另外一个想法,请与我分享。
答案 0 :(得分:0)
答案 1 :(得分:0)
找到了Linq这样做的方法......
DirectoryInfo d = new DirectoryInfo(ConfigurationManager.AppSettings["<path>"]);
List<string> recentDirectories = d.GetDirectories()
.Select(x => x.EnumerateDirectories()
.OrderByDescending(f => DateTime.Now.AddDays(-14))
.FirstOrDefault())
.Where(x => x != null)
.Select(x => x.FullName)
.ToList();
foreach (string dir in recentDirectories)
{
Directory.Delete(dir);
}
这是基于对this question here的回答。
这是非Linq的等效方式:
DirectoryInfo[] testDirs = d.GetDirectories();
List<DirectoryInfo> dirInfos = d.EnumerateDirectories().ToList();
IOrderedEnumerable<DirectoryInfo> infos = dirInfos.OrderByDescending(f => DateTime.Now.AddDays(-14));
dirInfos = infos.ToList();
foreach (DirectoryInfo dir in dirInfos)
{
Directory.Delete(dir.FullName);
}