delphi中删除文件夹的一些方法搜集及速度测试

测试条件:

测试电脑:笔记本,i78550u,8g内存,64位win10系统。

目标文件夹,4,757 个文件,745 个文件夹,79.5 MB。

================================================

第一种:

  最简单,需要引用System.IOUtils单元,DEPHI2010之后的版本才有。

TDirectory.Delete('D:\web\', True);

第二种:

需要引用ShellAPI单元。

function DelDirectory(const Source: string): Boolean;
var
  fo: TSHFILEOPSTRUCT;
begin
  FillChar(fo, SizeOf(fo), 0);
  with fo do
  begin
    Wnd := 0;
    wFunc := FO_DELETE;
    pFrom := PChar(Source + #0);
    pTo := #0#0;
    fFlags := FOF_NOCONFIRMATION + FOF_SILENT;
  end;
  Result := (SHFileOperation(fo) = 0);
end;

第三种:

function DelDirAll(aDir: string): Boolean;
var
  vSearch: TSearchRec;
  vRet: integer;
  vKey: string;
begin
  if aDir[Length(aDir)] <> '\' then
    aDir := aDir + '\';
  vKey := aDir + '*.*';
  vRet := FindFirst(vKey, faanyfile, vSearch);
  while vRet = 0 do
  begin
    if ((vSearch.Attr and fadirectory) = fadirectory) then
    begin
      if (vSearch.Name <> '.') and (vSearch.name <> '..') then
        DelDirAll(aDir + vSearch.name);
    end
    else
    begin
      if ((vSearch.Attr and fadirectory) <> fadirectory) then
      begin
        SysUtils.DeleteFile(aDir + vSearch.name);
      end;
    end;
    vRet := FindNext(vSearch);
  end;

  SysUtils.FindClose(vSearch);
  Removedir(aDir); // 如果需要删除文件夹则添加
  result := True;
end;

 

========================================================

测试结果:

第一种方法delphi自带的TDirectory.Delete删除速度最慢,每次大约需要二三十秒。

第二种方法快很多,每次大约需要5秒上下。

第三种最快,2到3秒左右。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是一种基于对象的编程语言,广泛用于Windows平台的软件开发。要实现Delphi文件夹的扫描,可以采用递归的方法来遍历目录树,检查每个文件夹是否为空。 首先,创建一个函数来判断一个文件夹是否为空。这个函数将接受一个文件夹的路径作为参数,并返回一个布尔值。在函数,我们可以使用TDirectory类来获取文件夹的所有文件和子文件夹的信息。如果文件夹没有文件和子文件夹,那么它就是一个空文件夹,函数将返回True;否则返回False。 接下来,创建另一个函数来扫描目标文件夹及其子文件夹。这个函数同样接受文件夹路径作为参数,并使用递归的方式遍历文件夹树。对于每个遍历到的文件夹,调用判断空文件夹的函数进行判断。如果发现一个空文件夹,可以将其路径记录下来或者执行其他自定义操作。 最后,在主程序,调用扫描函数并传入要扫描的文件夹路径。可以使用界面元素(如按钮、输入框)来接收用户输入的文件夹路径。程序会递归地扫描该文件夹及其子文件夹,并输出或执行其他操作。 值得注意的是,为了避免无限递归或不必要的扫描,可以在递归函数添加条件来限制文件夹的深度或者排除一些特定的文件夹。 使用Delphi来实现空文件夹扫描可以有效方便地检查目标文件夹的空文件夹,提高文件夹管理的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值