请问怎么复制文件(30分)

  • 主题发起人 主题发起人 lpacec
  • 开始时间 开始时间
L

lpacec

Unregistered / Unconfirmed
GUEST, unregistred user!
请问一下,这个问题怎么解决,即从一个地方复制一个文件去另一个地方,如果有重复,则覆盖
急救!。
 
procedure TForm1.Button1Click(Sender: TObject);
var
sPath:string;
fsTemp:SHFILEOPSTRUCT;
i:integer;
begin
sPath:=InputBox('文件操作','输入复制路径','c:/windows');
if sPath<>''then begin
fsTemp.Wnd := Self.Handle;
//设置文件操作类型
fsTemp.wFunc :=FO_COPY;
//允许执行撤消操作
fsTemp.fFlags :=FOF_ALLOWUNDO;
for i:=0 to ListBox1.Items.Count-1 do begin
//源文件全路径名
fsTemp.pFrom := PChar(ListBox1.Items.Strings);
//要复制到的路径
fsTemp.pTo := PChar(sPath);
fsTemp.lpszProgressTitle:='拷贝文件';
if SHFileOperation(fsTemp)<>0 then
ShowMessage('文件复制失败');
end;
end;
end;


 
用copyfile(),定义为:
BOOL CopyFile(

LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists
);
如:
CopyFile('c:/test.txt','d:/t.txt',true);是把c:/test.txt拷贝到d:/t.txt
 
复杂点的可以用SHFILEOPERATION,比如多个文件,甚至带子目录的,
,简单点的可以用COPYFILE和MOVEFILE.
 
谢谢各位,但是问题还是没解决,主要是如果有相同文件,它老提示是否覆盖,请问怎么解决?
procedure TForm1.Button1Click(Sender: TObject);
var
fsTemp:TSHFileOpStruct;
i:integer;
begin
 fsTemp.Wnd := Self.Handle;
//设置文件操作类型
fsTemp.wFunc :=FO_COPY;
//允许执行撤消操作
fsTemp.fFlags :=FOF_NOCONFIRMMKDIR ;//FOF_ALLOWUNDO;

fsTemp.pFrom := pchar(edit2.Text);//PChar(ListBox1.Items.Strings);
//要复制到的路径
fsTemp.pTo:= pchar(edit3.Text);//PChar(sPath);
fsTemp.lpszProgressTitle:='拷贝文件';
if SHFileOperation(fsTemp)<>0 then
ShowMessage('文件复制失败');
end;
 
CopyFile('c:/test.txt','d:/t.txt',false);文件存在则覆盖
SHFileOpStruct:fFlags :=FOF_NOCONFIRMATION
帮助里都有
 

Similar threads

回复
0
查看
894
不得闲
回复
0
查看
836
不得闲
回复
0
查看
1K
不得闲
D
回复
0
查看
777
DelphiTeacher的专栏
D
D
回复
0
查看
684
DelphiTeacher的专栏
D
后退
顶部