给你一个我的代码 procedure Deletefiles(DirName:String);//传入目录名。 Var TempFileName : String; TempRec : TSearchRec; Begin TempFileName := DirName+'\*.*'; if FindFirst(TempFileName,faAnyFile,TempRec)=0 then Begin deletefile(DirName+'\'+TempRec.Name); while findnext(temprec) = 0 do DeleteFile(DirName+'\'+TempRec.Name); End; FindClose(TempRec); End;
(转贴) 你建立一个目录,c:\tyn,里面放一堆的文件和文件夹。function DoRemoveDir(sDirName:String):Boolean; var hFindFile:Cardinal; tfile:String; sCurDir:String; bEmptyDir:Boolean; FindFileData:WIN32_FIND_DATA; begin bEmptyDir:=True; sCurDir:=GetCurrentDir; SetLength(sCurDir,Length(sCurDir)); ChDir(sDirName); hFindFile:=FindFirstFile('*.*',FindFileData); if hFindFile<>INVALID_HANDLE_VALUE then begin repeat tfile:=FindFileData.cFileName; if (tfile='.') or (tfile='..') then begin bEmptyDir:=bEmptyDir and True; Continue; end; bEmptyDir:=False; if FindFileData.dwFileAttributes= FILE_ATTRIBUTE_DIRECTORY then begin if sDirName[Length(sDirName)]<>'\' then DoRemoveDir(sDirName+'\'+tfile) else DoRemoveDir(sDirName+tfile); if not RemoveDirectory(PChar(tfile)) then result:=false else result:=true; end else begin if not DeleteFile(PChar(tfile)) then result:=false else result:=true; end; until FindNextFile(hFindFile,FindFileData)=false; end else begin ChDir(sCurDir); result:=false; exit; end; if bEmptyDir then begin ChDir('..'); RemoveDirectory(PChar(sDirName)); end; ChDir(sCurDir); result:=true; end;function DeleteDir(sDirName:String):Boolean; begin if Length(sDirName)<=0 then exit; Result:=DoRemoveDir(sDirName) and RemoveDir(sDirName); end;procedure TForm1.Button1Click(Sender: TObject); begin if DeleteDir('c:\tyn') then ShowMessage('ok'); end;
from http://kingron.myetang.com/zsfunc0a.htm (*// 标题:删除指定目录 说明:支持删除有只读、隐藏属性的文件或目录 设计:Zswang 日期:2002-01-25 支持:[email protected] //*)///////Begin Source function DeletePath(mDirName: string): Boolean; { 返回删除指定目录是否成功 } var vSearchRec: TSearchRec; vPathName: string; K: Integer; begin Result := True; vPathName := mDirName + '\*.*'; K := FindFirst(vPathName, faAnyFile, vSearchRec); while K = 0 do begin if (vSearchRec.Attr and faDirectory > 0) and (Pos(vSearchRec.Name, '..') = 0) then begin FileSetAttr(mDirName + '\' + vSearchRec.Name, faDirectory); Result := DeletePath(mDirName + '\' + vSearchRec.Name); end else if Pos(vSearchRec.Name, '..') = 0 then begin FileSetAttr(mDirName + '\' + vSearchRec.Name, 0); Result := DeleteFile(PChar(mDirName + '\' + vSearchRec.Name)); end; if not Result then Break; K := FindNext(vSearchRec); end; FindClose(vSearchRec); Result := RemoveDir(mDirName); end; { DeletePath } ///////End Source///////Begin Demo procedure TForm1.Button1Click(Sender: TObject); begin DeletePath(Edit1.Text); end; ///////End Demo
procedure Deletefiles(DirName:String);//传入目录名。
Var
TempFileName : String;
TempRec : TSearchRec;
Begin
TempFileName := DirName+'\*.*';
if FindFirst(TempFileName,faAnyFile,TempRec)=0 then
Begin
deletefile(DirName+'\'+TempRec.Name);
while findnext(temprec) = 0 do
DeleteFile(DirName+'\'+TempRec.Name);
End;
FindClose(TempRec);
End;
你建立一个目录,c:\tyn,里面放一堆的文件和文件夹。function DoRemoveDir(sDirName:String):Boolean;
var
hFindFile:Cardinal;
tfile:String;
sCurDir:String;
bEmptyDir:Boolean;
FindFileData:WIN32_FIND_DATA;
begin
bEmptyDir:=True;
sCurDir:=GetCurrentDir;
SetLength(sCurDir,Length(sCurDir));
ChDir(sDirName);
hFindFile:=FindFirstFile('*.*',FindFileData);
if hFindFile<>INVALID_HANDLE_VALUE then
begin
repeat
tfile:=FindFileData.cFileName;
if (tfile='.') or (tfile='..') then
begin
bEmptyDir:=bEmptyDir and True;
Continue;
end;
bEmptyDir:=False;
if FindFileData.dwFileAttributes=
FILE_ATTRIBUTE_DIRECTORY then
begin
if sDirName[Length(sDirName)]<>'\' then
DoRemoveDir(sDirName+'\'+tfile)
else
DoRemoveDir(sDirName+tfile);
if not RemoveDirectory(PChar(tfile)) then
result:=false
else
result:=true;
end
else
begin
if not DeleteFile(PChar(tfile)) then
result:=false
else
result:=true;
end;
until FindNextFile(hFindFile,FindFileData)=false;
end
else
begin
ChDir(sCurDir);
result:=false;
exit;
end;
if bEmptyDir then
begin
ChDir('..');
RemoveDirectory(PChar(sDirName));
end;
ChDir(sCurDir);
result:=true;
end;function DeleteDir(sDirName:String):Boolean;
begin
if Length(sDirName)<=0 then
exit;
Result:=DoRemoveDir(sDirName) and RemoveDir(sDirName);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if DeleteDir('c:\tyn') then
ShowMessage('ok');
end;
(*//
标题:删除指定目录
说明:支持删除有只读、隐藏属性的文件或目录
设计:Zswang
日期:2002-01-25
支持:[email protected]
//*)///////Begin Source
function DeletePath(mDirName: string): Boolean; { 返回删除指定目录是否成功 }
var
vSearchRec: TSearchRec;
vPathName: string;
K: Integer;
begin
Result := True;
vPathName := mDirName + '\*.*';
K := FindFirst(vPathName, faAnyFile, vSearchRec);
while K = 0 do begin
if (vSearchRec.Attr and faDirectory > 0) and
(Pos(vSearchRec.Name, '..') = 0) then begin
FileSetAttr(mDirName + '\' + vSearchRec.Name, faDirectory);
Result := DeletePath(mDirName + '\' + vSearchRec.Name);
end else if Pos(vSearchRec.Name, '..') = 0 then begin
FileSetAttr(mDirName + '\' + vSearchRec.Name, 0);
Result := DeleteFile(PChar(mDirName + '\' + vSearchRec.Name));
end;
if not Result then Break;
K := FindNext(vSearchRec);
end;
FindClose(vSearchRec);
Result := RemoveDir(mDirName);
end; { DeletePath }
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
DeletePath(Edit1.Text);
end;
///////End Demo