0
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 个文件,现在我想删除所有文件,除了谁的大小最大这两天我该怎么做。提前致谢

4

2 回答 2

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 等其他 DateTime 属性进行选择,例如LastWriteTime,您也可以为您的条件指定自己的开始和结束日期。

于 2013-03-21T11:42:59.640 回答
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

于 2013-03-21T11:36:33.287 回答