asp.net - 如何根据大小和日期从文件夹中删除文件

标签 asp.net file directory

假设我在一个文件夹中有 4 个文件。昨天的 2 个文件(第一个文件 - 1 mb,第二个文件 - 2mb)和今天的 2 个文件(第一个文件 - 5 mb,第二个文件 - 10 mb)。

首先,我想检查每个文件的日期,根据日期,最小大小的文件将从文件夹中删除。

在我的代码中,我删除了所有最小大小的文件,但我想删除每天最小大小的文件。

这是我的代码:

private void DeleteFiles()
{
    var di = new DirectoryInfo("E:\\UploadFiles");
    var files = di.GetFiles().GroupBy(f => f.LastWriteTime.Date);

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

此代码运行良好,首先我根据日期对文件进行分组,然后删除除最大文件之外的所有文件。现在我想要的是如果同一日期有 4 个相同大小的文件,我想删除这些文件并根据时间只将其中一个存储在文件夹中。我该怎么做?

最佳答案

你如何只按大小(从最小到最大)然后按最后写入时间(从旧到最新)对文件进行排序,然后删除直到只剩下一个(最大的,或者如果所有大小都相同,则最新):

private void DeleteFiles()
{
    var di = new DirectoryInfo("E:\\UploadFiles");
    var files = di.GetFiles().GroupBy(f => f.LastWriteTime.Date);

    foreach (var fileGrp in files)
    {  
        int fileCount = fileGrp.Count();
        foreach (FileInfo f in fileGrp.OrderBy(a => a.Length).ThenBy(a => a.LastWriteTime))
        {
            if (fileCount > 1)
            {
                f.Delete();
                fileCount--;
            }
            else break;
        }
    }
}

关于asp.net - 如何根据大小和日期从文件夹中删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966286/

相关文章:

asp.net - 在 JavaScript 中寻址 Shockwave Flash 对象 (MultiPowUpload) 的属性

c - 如何正确从文件中读取结构?

php - 如何在用户通过PHP填写表单后自动生成页面?

SVN check out 单个目录

javascript - 如何从动态生成的iframe中删除onload事件?

javascript - 在 javascript 中使用 lable.innerHTML 的标签集文本在回发后丢失

ASP.NET MySQL.NET 连接字符串

excel - 复制 OLEObject,并将其粘贴到文件夹(或桌面)

c# - 文件已存在时的 File.Copy() 性能

Erlang 创建目录