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秒左右。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值