Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1227745
  • 博文数量: 699
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 13:45
文章分类

全部博文(699)

文章存档

2011年(1)

2008年(698)

我的朋友

分类:

2008-10-15 13:53:48

  目录中的文件可以通过调用函数DeleteFile来删除,但对于特殊文件(只读、系统、隐藏等)则不能有效删除,必须更改文件属性为普通文件才能删除。更改文件属性可以用函数FileSetAttr,这里将特殊文件的属性设置为普通文件属性(属性值为0)。
 
  考虑到树型目录结构最适合于递归方法,所有这里用递归算法来实现DelTree函数。下面是具体实现程序。
 
  //path是需删除的目录路径
 
  //目录成功删除返回True,否则返回False
 
  function TForm1.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 ;
 
  该程序在 98、Delphi 4.0下编译通过。
【责编:huangchunmei】

--------------------next---------------------

阅读(333) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~