在delphi中拷贝整个文件夹怎么操作
1个回答
2016-11-10 · 知道合伙人软件行家
关注
展开全部
有以下办法复制整个文件夹:
1、使用 winexec 调用 xcopy 命令行:
winexec( 'xcopy d:\test e:\ /s/e', false);
2、调用 winAPI 函数:
function CopyDir(const SourceDir,DestDir: string): Boolean;
var
lpFileOp: TSHFileOpStruct;
begin
with lpFileOp do
begin
Wnd := Application.Handle;
wfunc := FO_COPY;
pFrom := pchar(SourceDir);
pTo := pchar(DestDir);
fFlags := FOF_ALLOWUNDO;
hNameMappings := nil;
lpszProgressTitle := nil;
fAnyOperationsAborted := false;
end;
Result := SHFileOperation(lpFileOp) = 0
end;
3、使用 delphi 文件函数编写:
function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
var
hFindFile:Cardinal;
t,tfile:String;
sCurDir:String[255];
FindFileData:WIN32_FIND_DATA;
begin
//记录当前目录
sCurDir:=GetCurrentDir;
ChDir(sDirName);
hFindFile:=FindFirstFile('*.*',FindFileData);
if hFindFile<>INVALID_HANDLE_VALUE then
begin
if not DirectoryExists(sToDirName) then
ForceDirectories(sToDirName);
repeat
tfile:=FindFileData.cFileName;
if (tfile='.') or (tfile='..') then
Continue;
if FindFileData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
begin
t:=sToDirName+'\'+tfile;
if not DirectoryExists(t) then
ForceDirectories(t);
if sDirName[Length(sDirName)]<>'\' then
DoCopyDir(sDirName+'\'+tfile,t)
else
DoCopyDir(sDirName+tfile,sToDirName+tfile);
end
else
begin
t:=sToDirName+'\'+tFile;
CopyFile(PChar(tfile),PChar(t),True);
end;
until FindNextFile(hFindFile,FindFileData)=false;
/// FindClose(hFindFile);
end
else
begin
ChDir(sCurDir);
result:=false;
exit;
end;
//回到当前目录
ChDir(sCurDir);
result:=true;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询