如何删除一个目录下的所有文件,目录中只有文件。
解决方案 »
- 如何判断tclientdataset中哪个字段是主键?
- ehlib4.3汉化版出来了吗?
- dll窗口的问题
- reportbuilder 的 footerband,如何只在末页显示 ?
- clientsocket解析问题!大家快来看~~~~
- 关于DBCHART的问题
- 关于together的下载???
- 当查询的数据较多时DELPHI中有没有可以指定每次取出多少的东西?
- 请问谁又对第三方控件imgscan.ocx操作的例子,发给我[email protected]。小弟不胜感激
- 50分可以做成exe文件,但运行提示adoquery1:cannot perform this operation
- 多用户cookies清理算法讨论!
- 关于Tquery的问题
{
CanUndo =True,表示把文件或目录删除到回收站(默认方式)
=False,表示真正删除
}
function DelFD(const Name:String;CanUndo:Boolean=True):Boolean;
var
Fo:TSHFileOpStruct;
begin
if not JudgeFDExists(Name) then
Raise Exception.Create('Cannot find the file or directory.')
else
begin
FillChar(Fo,SizeOf(Fo),0);
with Fo do
begin
Wnd:=0;
wFunc:=FO_DELETE;
pFrom:=PChar(Name+#0);
pTo:=#0#0;
if CanUndo then fFlags:=FOF_AllOWUNDO+FOF_NOCONFIRMATION
else fFlags:=FOF_NOCONFIRMATION+FOF_SILENT;
end;
Result:=(SHFileOperation(Fo)=0);
end;
end;
Boolean;
var
SearchRec : TSearchRec;
Res : Integer;
begin
Result := False;
TheDirectory := NormalDir(TheDirectory);
Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
try
while Res = 0 do
begin
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
begin
if ((SearchRec.Attr and faDirectory) > 0) and Recursive
then begin
EmptyDirectory(TheDirectory + SearchRec.Name, True);
RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
end
else begin
DeleteFile(PChar(TheDirectory + SearchRec.Name))
end;
end;
Res := FindNext(SearchRec);
end;
Result := True;
finally
FindClose(SearchRec.FindHandle);
end;
end;
var sub,files:array of string;
name,tem1,tem2:string;
i,pos,j,len:integer;
fileorfiles:boolean;
begin
// try
sub:=directory.GetFileSystemEntries(dest);
if length(sub)<>0 then
begin
for i:=0 to length(sub)-1 do
begin
fileorfiles:=false;
name:=sub[i];
pos:=length(dest)+2;
len:=length(name)-pos+1;
tem1:=copy(name,pos,len);
for j := 0 to length(tem1) - 1 do
begin
tem2:=copy(tem1,j,1);
if tem2='.' then
begin
fileorfiles:=true;
break;
end;
end;
if fileorfiles then
windows.DeleteFile(dest+'\'+tem1)
else
delDir(dest+'\'+tem1);
if fileorfiles=false then
directory.Delete(name);
end;
end;
end;
procedure deletedir(dest:String);
begin
try
delDir(dest);
directory.Delete(dest);
except
;
end;
end;直接用deletedir即可