怎样遍历一目录树并将其子目录及文件拷贝到另一地方 如题,如有代码请贴出来或发我E-mail:[email protected],万分感激…………………………………………………………………………………… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用SHFileOperation代码:http://www.cx66.com/cxgzs/program/delphi/966.htm 如果目的主要不是在遍历,俺推荐直接调用SaveToStream或者SaveToFile,剧EASY。 代码有很多, 我只说说思路:用FindFirst查找, 当结果为0表示找到了, 检查结果属性是否包含faDirectory, 如果是且名不为'.'和'..'那就递归调用遍例子目录. 最后别忘了FindClose释放资源. 补充一下楼上的,找下一个目录或文件要用FindNext huhu, pankun(剑神一笑) 说得对, 忘记了... ^_^# procedure CopyDirectoryTree(AHandle: THandle; const AFromDirectory, AToDirectory: String);var SHFileOpStruct: TSHFileOpStruct; FromDir: PChar; ToDir: PChar;begin GetMem(FromDir, Length(AFromDirectory)+2); try GetMem(ToDir, Length(AToDirectory)+2); try FillChar(FromDir^, Length(AFromDirectory)+2, 0); FillChar(ToDir^, Length(AToDirectory)+2, 0); StrCopy(FromDir, PChar(AFromDirectory)); StrCopy(ToDir, PChar(AToDirectory)); with SHFileOpStruct do begin Wnd := AHandle; // Assign the window handle wFunc := FO_COPY; // Specify a file copy pFrom := FromDir; pTo := ToDir; fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; fAnyOperationsAborted := False; hNameMappings := nil; lpszProgressTitle := nil; if SHFileOperation(SHFileOpStruct) <> 0 then RaiseLastWin32Error; end; finally FreeMem(ToDir, Length(AToDirectory)+2); end; finally FreeMem(FromDir, Length(AFromDirectory)+2); end;end;CopyDirectoryTree(Handle, edtFromDir.Text, edtToDir.Text); delpni7自适应屏幕大小 CxGrid与ADO异步执行 delphi的exe程序双击后没动静,但任务管理器中可以看到,但在任务栏中不显示也不显示程序窗体.这是怎么回事啊? 如何用SQL语句随机取得数据库里的一条记录? 关于 实体-关系图(Entity-Relationship Diagram) 怪了!,我想每页打印5条记录,但第一页显示10条,其它显示5条。请高手解答 汉字 不买也看看啊!!!!!求个算术运算的算法!!!! 一个入门的数据库问题 萌新求问 。。百钱买百鸡的问题 这是个什么问题啊! 200大元求一个SQL查询
http://www.cx66.com/cxgzs/program/delphi/966.htm
用FindFirst查找, 当结果为0表示找到了, 检查结果属性是否包含faDirectory, 如果是且名不为'.'和'..'那就递归调用遍例子目录. 最后别忘了FindClose释放资源.
var
SHFileOpStruct: TSHFileOpStruct;
FromDir: PChar;
ToDir: PChar;
begin GetMem(FromDir, Length(AFromDirectory)+2);
try
GetMem(ToDir, Length(AToDirectory)+2);
try FillChar(FromDir^, Length(AFromDirectory)+2, 0);
FillChar(ToDir^, Length(AToDirectory)+2, 0); StrCopy(FromDir, PChar(AFromDirectory));
StrCopy(ToDir, PChar(AToDirectory)); with SHFileOpStruct do
begin
Wnd := AHandle; // Assign the window handle
wFunc := FO_COPY; // Specify a file copy
pFrom := FromDir;
pTo := ToDir;
fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
if SHFileOperation(SHFileOpStruct) <> 0 then
RaiseLastWin32Error;
end;
finally
FreeMem(ToDir, Length(AToDirectory)+2);
end;
finally
FreeMem(FromDir, Length(AFromDirectory)+2);
end;
end;
CopyDirectoryTree(Handle, edtFromDir.Text, edtToDir.Text);