怎样删除目录中所有文件(里面目录除外)。
例如a目录中含有:
/dir1 /dir2 file1 file2
如何删除a里面所有文件,但不删除里面的dir1和dir2以及里面的文件?
例如a目录中含有:
/dir1 /dir2 file1 file2
如何删除a里面所有文件,但不删除里面的dir1和dir2以及里面的文件?
解决方案 »
- delphi中类似VB中函数string(),这样的函数吗?
- Object Pascal 支持像 C 中那样的数组指针吗?
- 求象delphi设计环境里那样的 对组件 缩放,移动 的组件或者思路
- 如何实现硬字库串口打印图形!急需!在线等……
- 把query中查询出的数据倒成文本文件怎么倒??
- TurboPower Async Professional方面的问题,请高手回答,急急!!
- 一直在用流,可不知流是什么概念,查帮助,也没找到,那位高手解释一下,好吗?
- 关于表生成文本文件遇到的事情,急
- XP menu的BUG???-->'Property XPMenu1.DimLevel does not exist!'
- 大虾们,我觉得大家还是别走把,求你们,要给一万个机会我,我还是说i love csdn
- 请教一个问题!!!
- 请教一个简单的作业
=========================================
//删除当前目录下的一类文件:
{1, 支持通配符,如 *.txt, *.* 等2, 不能删除文件夹3, 如果要删除某文件夹下的文件, 不许更改当前路径到改文件夹下,如://var CurrDir: string;CurrDir :=GetCurrentDir;chdir('a_dir');DelSomeFiles('*.*');chdir(CurrDir);}Procedure DelSomeFiles(fn: string);varSearchRec: TSearchRec;beginFindFirst(fn, faAnyFile, SearchRec);repeatif FileExists(SearchRec.Name) thenbeginFileSetAttr(SearchRec.Name,0); //修改文件属性为普通属性值DeleteFile(SearchRec.Name); //删除文件end;until (FindNext(SearchRec)<>0);FindClose(SearchRec);end;
oldDir: String;//保存当前目录function Deltree(path : string): Boolean ;
var
SearchRec: TSearchRec;
begin
//判断目录是否存在
if DirectoryExists(path) then
begin
//进入该目录,删除其中的子目录和文件
oldDir := GetCurrentDir;
ChDir(path);
//查找目录中所有任何文件
FindFirst('*.*', faAnyFile, SearchRec);
repeat
//修改文件属性为普通属性值
FileSetAttr(SearchRec.Name,0);
//如果是目录并且不是.和..则递归调用DelTree
if(SearchRec.Attr and faDirectory > 0) then
begin
if(SearchRec.Name[1]<> '.') then
if(not Deltree(SearchRec.Name)) then
break;
end
//如果是文件直接删除
else
if(not DeleteFile(SearchRec.Name))then
break ;
//继续查找,直到最后
until (FindNext(SearchRec)<>0) ;
//回到父目录,删除该目录
ChDir('..');
Result := ReMoveDir(path);
SetCurrentDir(oldDir);
end
else
Result := False ;
end ;
var
s:String;
SearchRec: TSearchRec;
begin
FindFirst(aDir+'\*.*', faAnyFile, SearchRec);
repeat
s := SearchRec.Name;
if SearchRec.Attr<>faDirectory then
begin
FileSetAttr(SearchRec.Name,0); //修改文件属性为普通属性值
DeleteFile(aDir+'\'+SearchRec.Name); //删除文件
end;
until (FindNext(SearchRec)<>0);
FindClose(SearchRec);
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls,shellapi,shlobj;//调用window彻底删除界面
function tform1.deletedirc(dir:string):boolean;
var
OpStruc: TSHFileOpStruct;
frombuf, tobuf: Array [0..128] of Char;
Begin
FillChar( frombuf, Sizeof(frombuf), 0 );
FillChar( tobuf, Sizeof(tobuf), 0 );
StrPCopy( frombuf, dir );With OpStruc DO Begin
Wnd:=0;//拥有窗口的句丙 这里设为0表示隐藏窗口 你可以设置为你的窗口
wFunc:= FO_DELETE;
pFrom:= @frombuf;
pTo:=@tobuf;
fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:= False;
hNameMappings:= Nil;
end;
ShFileOperation( OpStruc );
end;