Delphi覆盖文件和错误的修改日期时间

Delphi覆盖文件和错误的修改日期时间,delphi,delphi-xe2,last-modified,filetime,Delphi,Delphi Xe2,Last Modified,Filetime,我想在Delphi中获取上次修改的文件 通常像FileAge()这样的东西会起作用,唯一的问题是:如果我使用CopyFile用文件B覆盖*文件A*,文件A的修改日期不会像应该的那样随当前覆盖时间更新 我得到:CopyFile也复制文件属性,但我真的需要得到文件被覆盖时同样有效的修改日期 有这样的功能吗?我的整个应用程序都依赖于修改时间来决定是否继续处理文件 编辑只是澄清一下:我只是在监控文件。修改它们的不是我的应用程序。的文档说明: 现有文件的文件属性将复制到新文件 这意味着您不能使用基于文件

我想在Delphi中获取上次修改的文件

通常像
FileAge()
这样的东西会起作用,唯一的问题是:如果我使用
CopyFile
文件B覆盖*文件A*,文件A的修改日期不会像应该的那样随当前覆盖时间更新

我得到:
CopyFile
也复制文件属性,但我真的需要得到文件被覆盖时同样有效的修改日期

有这样的功能吗?我的整个应用程序都依赖于修改时间来决定是否继续处理文件


编辑只是澄清一下:我只是在监控文件。修改它们的不是我的应用程序。

的文档说明:

现有文件的文件属性将复制到新文件

这意味着您不能使用基于文件最后修改的属性的程序,或者实际上基于文件的任何属性。事实上,有各种方法可以更改文件最后修改的属性。事实上,它可以在时间上倒退

相反,我建议您使用来跟踪修改。这将允许您在文件被修改时接收通知。您可以基于
ReadDirectoryChangesW
API,以基于事件的方式编写程序


如果你不能使用
ReadDirectoryChangesW
和文件属性,那么你必须根据文件的内容做出决定。

不要使用CopyFile,删除文件A,然后再次创建文件B。我会使用Windows Shell方式使用
SHFileOperation
。我不能,我只是在监视文件。不是我在修改它们,但我仍然需要跟踪更改:(被覆盖文件的创建时间返回多少?然后,您的问题编辑与初始问题相对应。因此,您只是在监视文件,一旦检测到文件更改,您就想更改文件的修改日期?是的,我很清楚这一点,我在问题中特别提到了。我也使用了
ReadDirectoryChangesW
(捕捉得很好),但这不会缩放:如果用户正在复制(或覆盖)一个大文件夹(1000个文件),捕获所有更改的唯一方法是
扫描文件夹本身,而不是逐个处理文件。这就是为什么我在发生重大更改时依靠文件修改来捕获更改。覆盖包含1000个文件的文件夹不是一个极端/不寻常的情况。我必须处理这个问题!我不知道你什么时候说的你说,
ReadDirectoryChangesW
不可伸缩。如果你想继续使用上次修改的属性,就像你在评论中指出的那样,那么我真的看不出问题的关键。根据我的测试,如果用户覆盖了一个大文件夹cont,那么
ReadDirectoryChangesW
不会捕捉到每个更改对于1000个文件,这就是我所说的缩放。当然不,我不想继续使用上次修改的属性,因为它显然根本不可靠,但我确实想依靠一些可以跟踪(相对)较大更改的东西,因此我的问题是。