CopyDirectory() 文件复制问题

putinit 2005-10-24 10:12:31
文件复制问题:
使用坛子中贴出的自定义CopyDirectory()函数实现目录下文件的复制,在Source中可以使用通配符,如*.*可以复制一个目录下的全部文件到 Dest下,包含子目录和子目录下的文件,但如果指定在Source中使用*.rar的通配符,则只复制当前目录下的*.rar文件,而不会搜索子目录下的*.rar文件,
请问有什么方法可以解决??

通过穷举法找出每个子目录下的文件再逐个复制?

function CopyDirectory(const Source, Dest: string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd :=Application.Handle;
wFunc := FO_COPY;
pFrom := PChar(source+#0);
pTo := PChar(Dest+#0);
fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR+FOF_SILENT;
end;
SHFileOperation(fo);
Result := (SHFileOperation(fo) = 0);
end;
...全文
714 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianghd 2005-10-25
  • 打赏
  • 举报
回复
procedure FindAll(ADisk, APath: string; var Strings: TStrings; AProperty: string = '*.XML');
var
FPath: String;
FS: TSearchRec;
begin
FPath := IncludeTrailingPathDelimiter(ADisk) + IncludeTrailingPathDelimiter(APath) + '*.*';
if FindFirst(FPath + '*.*', faAnyFile, FS) = 0 then
begin
if (FS.Name <> '.') and (FS.Name <> '..') then
begin
if (FS.Attr and faDirectory) = faDirectory then
begin
FindAll(ADisk, IncludeTrailingPathDelimiter(APath) + FS.Name, Strings, AProperty);
end
else
Strings.Add(FS.Name);
end;

while FindNext(FS) = 0 do
begin
if (FS.Name <> '.') and (FS.Name <> '..') then
begin
if (FS.Attr and faDirectory) = faDirectory then
begin
FindAll(ADisk, IncludeTrailingPathDelimiter(APath) + FS.Name, Strings, AProperty);
end
else
Strings.Add(FS.Name);
end;
end;
end;
FindClose(FS);
end;

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧