在delphi中如何实现删除一个文件夹下的所有文件夹和文件??(100分)

G

gf.z

Unregistered / Unconfirmed
GUEST, unregistred user!
如删除c:/windows/temp
下的所有文件和子文件夹???
 
function Deldirfile(spath:string; bself:boolean):boolean;
var
srZt:TSearchRec;
iFound:integer;
begin
result:=true;
iFound := FindFirst(sPath+'/*.*',faAnyFile, srZt);
while iFound = 0 do
begin
if lowercase(ExtractFileExt(srZt.name))='.txt' then
begin
iFound := FindNext(srZt);
continue;
end;
try
deletefile(sPath+'/'+srZt.name);
iFound := FindNext(srZt);
except
result:=false;
break;
end;
end;
FindClose(srZt);
if bself then
result:=RemoveDir(spath);
end;
 
请问当文件夹里有文件正在使用而不能删除的时候,上面的代码会不会出错!???
 
出错吗?用try一下就可以了.

正在使用的文件怎么删除嘛?
 
这是我以前编写的,使用ShellFileRemove()删除文件或目录到回收站中:

ShellFileRemove(0, 'c:/windows/temp', False)


uses ..., ShellAPI;


//******************************************************************************
// 功能:Shell文件操作-通用
//******************************************************************************
function ShellFileOperation(Owner:HWND; const FromFile, ToFile: string;
Op, Flags: Word):Boolean;
Var
FileStruct : TSHFileOpStruct;
s1, s2 : string;
begin
s1 := FromFile + #0#0;
s2 := ToFile + #0#0;
With FileStruct do
Begin
Wnd := Owner;
wFunc := op;
pFrom := PChar(s1);
pTo := PChar(s2);
fFlags := Flags;
hNameMappings :=nil;
lpszProgressTitle :=nil;
fAnyOperationsAborted := False;
End;
Result:= (SHFileOperation(FileStruct)=0)
and (not FileStruct.fAnyOperationsAborted);
end;

//******************************************************************************
// 功能:Shell文件操作-删除
//******************************************************************************
function ShellFileRemove(Owner:HWND; const FileOrDir: string; Confirm: Boolean): Boolean;
var
Flag: WORD;
begin
Flag:= FOF_ALLOWUNDO;
if not Confirm then Flag:= Flag or FOF_NOCONFIRMATION;
Result:= ShellFileOperation(Owner, FileOrDir, #0, FO_DELETE, Flag);
end;
 
顶部