计算目录大小的函数,获得目录文件列表,计算文件的大小

本文提供两个实用函数:一是递归查找指定目录下所有文件路径的函数,二是获取指定文件大小的函数。通过结合使用这两个函数,可以方便地计算出任意目录的总大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个函数可以获得指定目录下所有的文件路径+名称,能够递归搜索:

procedure FindAllFile(const Dir: string;List: TStringlist);

var

   hFindFile: THandle;

   FindFileData: WIN32_FIND_DATA;

   FullName,FName,s:string;

begin

   s:=IncludeTrailingPathDelimiter(Dir);

   hFindFile := FindFirstFile(pchar(s+'*.*'), FindFileData);

  if hFindFile <> 0 then begin

     repeat

       FName:=FindFileData.cFileName;

       FullName:=s+FName;

      if (FName='.') or (FName='..') then continue;

      if (FindFileData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY then

         FindAllFile(FullName,List)

      else

         begin

           List.Add(FullName);

        end;

     until FindNextFile(hFindFile, FindFileData) = false;

     windows.FindClose(hFindFile);

  end;

end;



这个函数可以获得指定文件的大小:

function GetFileSizeByName(AFileName: string): Int64;

var

   h: THandle;

   dwHigh,dwLow:DWORD;

begin

   dwHigh:=0;

  if FileExists(AFileName) then

   begin

     h:= FileOpen(AFileName,fmOpenRead or fmShareDenyNone);

     dwLow:=GetFileSize(h,@dwHigh);

    if (dwLow = $FFFFFFFF) and (GetLastError() <> NO_ERROR) then

       Result:=0

    else

       Result:= (dwHigh shl 32) + dwLow;

     FileClose(h);

  end

  else

     Result := 0;

end;
要获得目录的总大小,可以先用第一个函数获得所有目录下文件的列表,然后遍历这个列表,累加文件尺寸。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值