file - 如何克隆文件?

标签 file delphi winapi copy delphi-2009

我想制作一个文件的相同副本,并且我知道如何将文件的内容复制到新文件中,但我不知道如何复制属性和日期。

我尝试了以下代码,但它在 Delphi 2009 中不起作用:

SrcHandle:=CreateFile(PWideChar('\\?\'+SrcName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0);
DestHandle:=CreateFile(PWideChar('\\?\'+DestName), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, SrcHandle);

请注意,目标 CreateFile 的最后一个参数是源文件的句柄。 Delphi 说,如果我这样做,它会将“属性和扩展属性”复制到新文件中。但事实并非如此……

最佳答案

使用IOUtils中的TFile.Copy()。操作系统提供文件复制功能,此功能利用了它们。此函数调用 Windows CopyFile 函数。如果您愿意,可以直接调用它。

以这种方式复制文件后,所有属性都将被复制。最后一步是文件时间戳。使用 GetFileTimeSetFileTime 执行此步骤。

关于file - 如何克隆文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25157572/

相关文章:

文件中的 Java 输出

forms - 在 Delphi 中对于模态表单使用 Free 而不是 Release 安全吗?

c++ - 对 SetThreadErrorMode()、SetErrorMode()、_set_error_mode() 和 _CrtSetReportMode() 的混淆

delphi - 从文件夹中读取无效文件名

delphi - 有什么方法可以检测是否单击了表单?

delphi - 如何将 EXPLICIT_ACCESS 与 SetEntriesInAclA 的 jedi-winutils 正确对齐?

c++ - 如何使用RAWKEYBOARD中的ExtraInformation?

python - 如何将重复的数据 block 拆分为多列并解析日期时间?

java - 在 linux 和 macintosh 上查找 "application data"的目录

c++ - 当我使用remove()时权限被拒绝