A:天软中没有直接的模型可以实现文件夹的复制,但可以通过模型
FileCopy迭代复制文件夹下所有文件实现文件夹的复制。
其中创建新的文件夹通过模型
CreateDir实现。
实现模型
FolderCopy
模型文件:
附件:FolderCopy.fun
代码及函数说明
Function FolderCopy(ScrAlias,ScrName,DestAlias,DestName,FailifExists,Files);
Begin
{**
%% @explain(说明) 文件复制,支持整个文件夹复制
源文件夹路径不存在返回0,目标文件夹路径不存在会新建
%% @param(SrcAlias)(VarChar) 源文件目录别名。
%% @param(SrcName)(VarChar) 源文件名
%% @param(DestAlias)(VarChar) 目标文件目录别名
%% @param(DestName)(VarChar) 目标文件名
%% @param(FailIfExists)(Boolean) 目标存在时拷贝失败。默认为假,也就是说默认是即便目标已经存在也拷贝。
如果为真,则在目标已经存在时,则拷贝失败
%% @param(Files)(array) 复制的文件列表
%% @return(Boolean) 文件复制是否成功
**}
{
%% @example(范例) 将本地文件夹C:\Users\86152\Desktop\test 复制到C:\Users\86152\Desktop\测试
f1:="C:\\Users\\86152\\Desktop\\test";
f2:="C:\\Users\\86152\\Desktop\\测试";
ret:=rdo2 Foldercopy("",f1,"",f2,0,t);
if ret then
return t;
else
return ret;
}
if not Files then Files:=array();
fname:="FileName";
ftype:="Attr";
fcopy:="FileCopy";
rt:=filelist(ScrAlias,ScrName);//获取源文件
if not istable(rt) then return 0;
//源文件不是文件夹,复制文件
if rt[0,ftype]="A" then
begin
ret:=FileCopy(ScrAlias,ScrName,DestAlias,DestName,FailifExists);
Files&=array((fname:ScrName,"DestName":DestName,ftype:"A",fcopy:ret?:0));
return ret;
end
//创建文件夹,若文件夹存在则创建失败
ret:=CreateDir(DestAlias,DestName);
Files&=array((fname:ScrName,"DestName":DestName,ftype:"D",fcopy:ret?:0));
//获取文件夹中的所有文件逐个复制
flist:=filelist(ScrAlias,ScrName$"\\*");
flist:=select * from flist where not ([fname] in array(".","..")) end;
if istable(flist) then
begin
for i in flist do
begin
f0:=ScrName$"\\"$flist[i,fname];
f1:=DestName$"\\"$flist[i,fname];
if flist[i,ftype]="D" then
FolderCopy(ScrAlias,f0,DestAlias,f1,FailifExists,Files);
else
begin
ret:=FileCopy(ScrAlias,f0,DestAlias,f1,FailifExists);
Files&=array((fname:f0,"DestName":f1,ftype:flist[i,ftype],fcopy:ret?:0));
end
end
end
return 1;
End;
范例:将本地文件夹C:\Users\86152\Desktop\test 复制到C:\Users\86152\Desktop\测试
源文件夹下的文件:子文件夹test下也存在四个不同格式的文件
范例代码:
f1:="C:\\Users\\86152\\Desktop\\test";
f2:="C:\\Users\\86152\\Desktop\\测试";
ret:=rdo2 Foldercopy("",f1,"",f2,0,t);
if ret then
return t;
else
return ret;
执行结果:
复制的目标文件:
