我正在c#中创建一个程序,该程序将保存给定目录中的所有文件
创建于特定日期,然后压缩这些文件并将其存储在另一个目录中。声音
简单明了,我拥有Teleriks组件的许可证,因此可以处理拉链业务。

但是为了选择文件,我使用以下代码:

        //Get all files created yesterday
        DateTime to_date = DateTime.Now.AddDays(-1);

        var directory = new DirectoryInfo(@"C:\Path_Of_Files");

        var files = directory.GetFiles()
                    .Where(file => file.CreationTime <= to_date);

        if (files.Count() > 0)
        {
          //Zipping code here
        }


但是,这为我提供了目录中的所有文件,因此,它没有压缩700个文件,而是压缩了文件夹中的所有53'000个文件,这不是我想要的。

当我在Windows资源管理器中查看时,我在“上次修改时间”列中看到了正确的日期,但是由于某种原因,我的代码拒绝确认相同的日期。我都尝试过:

        var files = directory.GetFiles()
                    .Where(file => file.CreationTime <= to_date);




        var files = directory.GetFiles()
                    .Where(file => file.LastWriteTime <= to_date);


两者具有相同的结果。

我究竟做错了什么?

最佳答案

您当前的Where表达式将为您提供昨天这个时间或之前的所有文件。也许您想要这样的东西:

var files = directory.GetFiles()
    .Where(file => file.LastWriteTime.Date == to_date.Date);


这将检查文件的最后修改日期的日期部分是否与指定输入日期的日期部分匹配。

09-30 13:11
查看更多