如何克隆文件?

时间:2014-08-06 10:06:44

标签: 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的最后一个参数是sorce文件的句柄。 Delphi说如果我这样做,它会将“属性和扩展属性”复制到新文件中。但它没有......

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

只需手动设置文件属性 - SetFileAttributes function