如何根据日期从文件夹中删除文件

时间:2013-03-21 11:34:23

标签: asp.net file

private void DeleteFiles()
{
    DirectoryInfo di = new DirectoryInfo("E:\\test");
    var files = di.GetFiles();
    var maxFile = files.Max(r => r.Length);

    foreach (FileInfo file in files.Where(r => r.Length < maxFile))
    {
        file.Delete();
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    this.DeleteFiles();
}

在这个代码中我根据大小删除文件现在我想要的是我也想根据日期删除文件 例如:假设我昨天创建了5个文件,今天又创建了5个文件,我现在要删除所有文件,除了两天的大小最大,我该怎么办呢。 提前致谢

2 个答案:

答案 0 :(得分:0)

你可以得到这样的时间

DateTime creationTime = File.GetCreationTime(@"c:\file.txt");
DateTime lastWriteTime = File.GetLastWriteTime(@"c:\file.txt");
DateTime lastAccessTime = File.GetLastAccessTime(@"c:\file.txt");

http://www.csharp-examples.net/file-creation-modification-time/

还使用DateTime.Compare

比较时间

http://msdn.microsoft.com/en-us/library/system.datetime.compare.aspx

答案 1 :(得分:0)

您可以根据FileInfo.CreationTime属性选择文件,然后选择以下文件:

private void DeleteFiles()
{
    DirectoryInfo di = new DirectoryInfo("E:\\test");
    var files = di.GetFiles();
    var maxFile = files.Max(r => r.Length);

    DateTime startDate = DateTime.Now.Date.AddDays(-1);
    DateTime endDate = DateTime.Now.Date;

    var filesToBeDeleted = files.Where(r=> (r.Length < maxFile)  
                                         && (r.CreationTime >= startDate &&
                                             r.CreationTime <= endDate));

    foreach (FileInfo file in filesToBeDeleted)
    {
        file.Delete();
    }
}

您可以使用FileInfo(LastWriteTime)根据其他DateTime属性进行选择,也可以为条件指定自己的开始日期和结束日期。