如何实现文件拷贝?(100分)

  • 主题发起人 主题发起人 dannyzou
  • 开始时间 开始时间
D

dannyzou

Unregistered / Unconfirmed
GUEST, unregistred user!
求教高手如何在delphi中进行外部文件的复制?
该调用哪个 API函数?
最好能写出语句!
 
CopyFile('yourfilename.txt', False);
这个函数带两个参数,第一个就是文件名,第二个表示如果文件存在是否覆盖.
 
如果你的文件名是变量,那么这样写:
copyfile(PChar(yourfile), false);
 
uses shellapi
//文件加操作,拷贝、移动、重命名、删除
function myshellFile(sourcefile,destFile: string;mytype:uint):boolean;
var
OpStruc: TSHFileOpStruct;
begin
with OpStruc do
begin
wnd := 0;
wFunc := mytype;//操作类型
pfrom :=pchar(sourcefile);
pto := pchar(destFile);
fFlags :=FOF_NOCONFIRMATION OR FOF_NOERRORUI;
fAnyOperationsAborted := false;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
if ShFileOperation(OpStruc)<>0 then
result:=false
else
result:=true;
end;
 
var
sPath: string;
fsTemp: SHFILEOPSTRUCT;
Flags: FILEOP_FLAGS;
i, t: integer;
begin
sPath := bsSkinDirectoryEdit1.Text;
Flags := Flags + FOF_ALLOWUNDO; //允许Undo动作
Flags := Flags + FOF_RENAMEONCOLLISION; //冲突时重新命名
Flags := Flags + FOF_SILENT; //不显示进度
Flags := Flags + FOF_NOCONFIRMMKDIR;//创建新目录不确认
fsTemp.fFlags := Flags;
fsTemp.Wnd := Self.Handle; //设置文件操作类型
fsTemp.wFunc := FO_COPY;
for i := 0 to FileListView.Items.Count - 1 do
begin //源文件全路径名
fsTemp.pFrom := PChar(FileListView.Items.Item.Caption + #0#0);
end;
fsTemp.pTo := PChar(sPath + #0#0); //要复制到的路径
fsTemp.lpszProgressTitle := '拷贝文件';
if ShFileOperation(fsTemp)<>0 then
showmessage('操作失败')
else
ShowMessage('Ok');
end;
 
用流拷贝文件(非api函数)
procedure FileCopy(const sourcefilename, targetfilename: string);
var
S, T: TFileStream;
begin
S := TFileStream.Create(sourcefilename, fmOpenRead);
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size);
finally
T.Free;
end;
finally
S.Free;
end;
end;
 
procedure TSetupForm.MyCopyFile(SourceFileName,TargetFileName: String);
Var
S: TFileStream;
T: TFileStream;
begin
S := TFileStream.Create(SourceFileName, fmOpenRead);
T := TFileStream.Create(TargetFileName, fmOpenWrite or fmCreate or fmOpenReadWrite);
T.CopyFrom(S, S.Size);
T.Free;
S.Free;
end;
 
多人接受答案了。
 

Similar threads

回复
0
查看
995
不得闲
回复
0
查看
819
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
890
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部