我在winxp下用copyfile函数向U盘考文件时,发现速度非常慢,可是在win2000中,速度非常快。基本上是十倍还不只。
后来,研究了一下。发现底层是调用kernel32.dll这个API。于是,我把2000中的API,放在XP中调用。可是会出错。不知道为什么。请大虾解答。谢谢
调用方式:implementation
function copyFileFrom2000Api(ASourceDir:pAnsiChar; ADestDir:pAnsiChar;over:LongBool):Bool;stdcall;external 'kernel32.dll' name 'CopyFileA';
copyFileFrom2000Api('c:\1.txt','d:\1.txt',false);非常感谢!!!!
后来,研究了一下。发现底层是调用kernel32.dll这个API。于是,我把2000中的API,放在XP中调用。可是会出错。不知道为什么。请大虾解答。谢谢
调用方式:implementation
function copyFileFrom2000Api(ASourceDir:pAnsiChar; ADestDir:pAnsiChar;over:LongBool):Bool;stdcall;external 'kernel32.dll' name 'CopyFileA';
copyFileFrom2000Api('c:\1.txt','d:\1.txt',false);非常感谢!!!!
我用你的代码在XPsp2下测试,复制10个文件到U盘,50M也就1分钟左右。
批量复制文件也可以使用SHFileOperation
procedure TForm1.FileCopy(const SourceFileName, TargetFileName: string);
var
S, T: TFileStream;
begin
S := TFileStream.Create(SourceFileName, fmOpenRead);
try
T := TFileStream.Create(TargetFileName, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size);
finally
T.Free
end;
finally
S.Free;
end;
end;
也有可能是XP和2000管理U盘的方法不太一样,乱猜猜~