|
獲取指定擴(kuò)展名的文件
//獲取文件列表 三個(gè)參數(shù)分別是:路徑,擴(kuò)展名,搜索結(jié)果保存變量 procedure FindAllFile(const Dir:
string;ext:string;List: TStringlist); var hFindFile: THandle;
FindFileData: WIN32_FIND_DATA; FullName,FName,s:string; begin
s:=IncludeTrailingPathDelimiter(Dir); hFindFile :=
FindFirstFile(pchar(s+'*.'+ext), 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,ext,List) else begin
List.Add(FullName); end; until FindNextFile(hFindFile,
FindFileData) = false; windows.FindClose(hFindFile);
end; end;
=====================================================
這個(gè)函數(shù)可以獲得指定目錄下所有的文件路徑+名稱,能夠遞歸搜索:
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; 這個(gè)函數(shù)可以獲得指定文件的大?。?/p>
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; 要獲得目錄的總大小,可以先用第一個(gè)函數(shù)獲得所有目錄下文件的列表,然后遍歷這個(gè)列表,累加文件尺寸。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/mrtechno/archive/2007/07/09/1683308.aspx
|