首页 > 解决方案 > System.IO 文件创建日期行为问题

问题描述

我编写了一个 Windows 服务,将未压缩的大图像与其小得多的缩略图进行比较,以确定哪些图像需要新的缩略图或根本没有缩略图......我正在使用文件的创建日期来确定哪些需要更新(如果未压缩图像的创建日期大于缩略图,则缩略图已过期)。

一切都很好,我唯一的问题是当我将新版本的缩略图保存在现有的缩略图上时......起初我只是做一个简单的Bitmap.Save但是当覆盖它只会改变文件的修改日期。我在File.Delete()保存新版本之前添加了它,它删除了旧版本,保存了一个新版本(应该如此),但是新文件的创建日期仍然是旧的创建日期......

我删除了每个旧缩略图,等待了几分钟,然后再次运行创建代码,全新的创建日期......是否有一些时间框架 Windows 将文件数据存储在内存中,也许它可以识别相同的文件名并将新文件赋予旧文件创建日期???

标签: vb.netwindows-10system.io.file

解决方案


根据File.SetCreationTime(String, DateTime) Method的文档,

NTFS 格式的驱动器可能会在短时间内缓存文件元信息,例如文件创建时间。因此,如果您要覆盖或替换现有文件,可能需要显式设置文件的创建时间。

但是,如果您要谨慎,请重命名原始文件,例如在末尾加上“.old”。这样,它必须为新文件创建一个新的目录条目。然后,如果出现严重错误,它的 .old 副本仍然存在(直到您将其删除)。


推荐阅读