您的位置:首页 > 其它

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

2008-06-12 09:20 375 查看
这个函数可以获得指定目录下所有的文件路径+名称,能够递归搜索:

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;


要获得目录的总大小,可以先用第一个函数获得所有目录下文件的列表,然后遍历这个列表,累加文件尺寸。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐