当前位置:首页 » 文件管理 » delphi文件夹复制文件夹

delphi文件夹复制文件夹

发布时间: 2023-05-27 18:43:11

‘壹’ 我用delphi做一个小的实验,就是复制文件,可是,复制老是不成功是怎么回事啊

程序没问题,但看你的图发现原始路径和目标路径一样,文件复制不允许自身拷贝;如果改进程序,就判断一下路径是否一致,一致时拒绝执行,给个提示更好。

‘贰’ delphi复制一个目录或文件时,显示正在复制的文件名

//********************************************************************
//功能:将FromPath路径指定的文件拷贝到ToPath指定路径下
//参数:(1)FromPath,一个完全限定的文件路径,指定源操作文件位置
//
(2)ToPath,目的文件位置,如果ToPath指定的目录不存在将自动创建它
//返回值:
1,复制操作成功完成
//
0,复制操作被取消
//
-1,复制操作执行失败
//
//
说明:ToPath中不能含有通配符
//
若FromPath指定一个文件,则ToPath可以指定一个目录或一个将创建的
//
新文件;若FromPath指定一个目录或含有通配符的路径,即使ToPath指
//
定一个新文件,ToPath也将被解析为一个目录(目录名即为新文件名)。
//*********************************************************************
function
dlgCopyFiles(FromPath,ToPath:string):Integer;
var
lpFileOP:SHFileOpStruct;
begin
lpFileOP.Wnd:=0;
lpFileOP.wFunc:=FO_COPY;
lpFileOP.pFrom:=PWideChar(FromPath+#0);
lpFileOP.pTo:=PWideChar(ToPath+#0);
//自动创建目录
lpFileOP.fFlags:=FOF_NOCONFIRMMKDIR;
Result:=SHFileOperation(lpFileOP);
if(lpFileOP.fAnyOperationsAborted)then
Result:=0
else
begin
if(Result=0)then
Result:=1
else
Result:=-1;
end;
end;

‘叁’ Delphi 怎么制作复制文件夹程序

如问题所描述的,将C:abc 做成变量,代码可以如下编写:

procereTForm1.btn1Click(Sender:TObject);
varsSource,sTarget:string;
begin
sSource:='c:abc';
sTarget:='d:abc';
WinExec('x'+sSource+''+sTarget+'/s/e',SW_HIDE);
end;

‘肆’ 用delphi复制文件夹

procere findAll(tmp:string;ss:TStrings);
var
sc:TSearchRec;
begin
if FindFirst(tmp+'\*.*',faAnyFile,sc)=0 then
begin
repeat
if (sc.Attr and faDirectory)=sc.Attr then
if sc.Name[1]<>'.' then
findAll(tmp+'\'+sc.Name+'\*.*',ss)
else
else
ss.Append(tmp+'\'+ sc.Name);
until FindNext(sc)<>0;
end;
FindClose(sc)
end;
这个函数是找tmp目录下面的所有文件,然后生成一个文件路径列表。
有了路径列表
for i:=0 to sl.count-1 do
begin
file(sl[i],目标路径+extractfilename(sl[i]));
end;

好了 have fun

‘伍’ delphi复制文件夹并覆盖-要求必须覆盖的

使用下面的函数即可,此函数使用了SHFileOperation API函数。代码如下:

FunctionCopy_Dir(SourceDir,DestDir:String;nLx:Integer):Boolean;
Var
Opstruc:TshFileOpStruct;
frombuf,tobuf:Array[0..128]ofChar;
begin
FillChar(frombuf,Sizeof(frombuf),0);
FillChar(tobuf,Sizeof(tobuf),0);
StrP(frombuf,SourceDir);
CasenLxof
1:
StrP(tobuf,DestDir);
end;
WithOpstrucDo
Begin
Wnd:=0;
CasenLxof
1:wFunc:=FO_COPY;
2:wFunc:=FO_DELETE;
ElsewFunc:=FO_COPY;
end;
pFrom:=@frombuf;
pTo:=@tobuf;
fFlags:=FOF_NOCONFIRMATION;
fAnyOperationsAborted:=False;
hNameMappings:=Nil;
lpszProgressTitle:=Nil;
end;
try
ShFileOperation(OpStruc);
Result:=True;
except
Result:=False;
end;
end;

需要引用单元uses shellapi;

测试代码:

Copy_Dir('c:aa','d:',1);


SHFileOperation函数说明

函数功能描述:文件操作,与 Shell 的动作相同.

函数原型:

#include<shellapi.h>
WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT
lpFileOp);

参数:
typedef struct _SHFILEOPSTRUCT
{

HWND
hwnd; //父窗口句柄

UINT
wFunc; //要执行的动作

LPCTSTR
pFrom;
//源文件路径,可以是多个文件

LPCTSTR
pTo;
//目标路径,可以是路径或文件名

FILEOP_FLAGS
fFlags; //标志,附加选项

BOOL
fAnyOperationsAborted; //是否可被中断

LPVOID
hNameMappings;
//文件映射名字,可在其它 Shell 函数中使用

LPCTSTR
lpszProgressTitle; // 只在 FOF_SIMPLEPROGRESS
时,指定对话框的标题。
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;

wFunc 可以为:
/FO_MOVE
0x0001移动文件
FO_COPY
0x0002复制文件
FO_DELETE
0x0003删除文件,只使用 pFrom
FO_RENAME
0x0004文件重命名

fFlags可以为:
FOF_MULTIDESTFILES
0x0001//pTo
指定了多个目标文件,而不是单个目录
FOF_CONFIRMMOUSE
0x0002
FOF_SILENT
0x00044// 不显示一个进度对话框
FOF_RENAMEONCOLLISION
0x0008//
碰到有抵触的名字时,自动分配前缀
FOF_NOCONFIRMATION
0x0010// 不对用户显示提示
FOF_WANTMAPPINGHANDLE
0x0020// 填充 hNameMappings
字段,必须使用 SHFreeNameMappings 释放
FOF_ALLOWUNDO
0x0040// 允许撤销
FOF_FILESONLY
0x0080// 使用 *.* 时, 只对文件操作
FOF_SIMPLEPROGRESS
0x0100//
简单进度条,意味者不显示文件名。
FOF_NOCONFIRMMKDIR
0x0200//
建新目录时不需要用户确定
FOF_NOERRORUI
0x0400// 不显示出错用户界面
FOF_NOCOPYSECURITYATTRIBS
0x0800// 不复制 NT 文件的安全属性
FOF_NORECURSION
0x1000// 不递归目录

返回值:
函数成功返回 0 ,失败返回非 0 。

‘陆’ delphi中如何实现文件的复制

你的这个问题我来说说:
用CopyFile()函数吧。
CopyFile(pchar('c:\123.txt'),pchar('d:\123-备份.txt'),False) ;

其实作为编程,你可以选择文件并动态设置文件名:

首先你在form上添加个savefiledialg,并设置这个savefiledialg相关参数,
再在form上添加个openfiledialg ,并设置这个openfiledialg的相关参数。

然后这样编程:
if openfiledialg1.execute then
begin
if savefiledialg1.excetu then
begin
CopyFile(pchar(openfiledialg1.filename),pchar(savefiledialg1.filename),False) ;
end ;
end ;

(以上代码只是随手编写,过程是正确的,但是不保证关键字的字母排列是否正确。)

‘柒’ delphi中怎么移动文件夹,我举个例子,大家来看看

用 SHFileOperation 这个吧,它能做的事情实在太多了,在MSDN查查这个函数,相信你收获一定不少,呵呵:use Shellapi; //记得 use Shellapifunction MoveDir(const aSrc, aDst: String): Boolean;
var
sfo: TShFileOpStruct;
i: Integer;
begin
FillChar(sfo,SizeOf(TShFileOpStruct),0);
sfo.fFlags:=FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR or FOF_SILENT or FOF_ALLOWUNDO;
sfo.Wnd:=0;
sfo.wFunc:=FO_MOVE;
sfo.pFrom:=PChar(aSrc);
sfo.pTo:=PChar(aDst);
Result:=not BOOL(SHFileOperation(sfo));
end;procere TForm1.FormCreate(Sender: TObject);
begin
SHOWMESSAGE(BoolToStr(MoveDir('C:\www','D:\abcd'),True));
end;

‘捌’ delphi如何复制文件夹

可以用以下的方法:

CopyFile(pchar('c:\sql.txt'), pchar('d:\sql.txt'), True);

只要是文件的复制,都可以。

移动文件:
MoveFile(pchar('c:\sql.txt'), pchar('d:\sql.txt'));

删除文件:

DeleteFile('c:\sql.txt');

以上都是可行的。

热点内容
批处理ftp上传文件夹 发布:2025-04-22 17:29:26 浏览:787
android日程管理系统 发布:2025-04-22 17:13:28 浏览:386
编译语言全家桶软件 发布:2025-04-22 17:02:29 浏览:390
javascriptdes加密 发布:2025-04-22 17:02:11 浏览:388
python线程参数 发布:2025-04-22 17:01:01 浏览:319
卫生员什么配置 发布:2025-04-22 17:00:02 浏览:220
苹果系统搭建服务器的软件 发布:2025-04-22 16:36:29 浏览:13
房车配置怎么选择 发布:2025-04-22 16:22:14 浏览:493
编程猫gb 发布:2025-04-22 16:22:13 浏览:632
密码加密php 发布:2025-04-22 16:07:09 浏览:582