怎么样才能遍历一个目录跟其下的子目录(以二种方式实现

来源:互联网 发布:paragon ntfs foe mac 编辑:程序博客网 时间:2024/04/30 10:11
 

下面的功能为实现计算指定目录下某类型的文件个数,并写入List列表中,根据这个可写出对文件目录的其他的操作

procedure SearchFileExList(const ADir, vType: string; var AFileItems: TStringList);var  vFound: TSearchRec;  vSourceDirs, vDestDirs: TStrings;  vFinished, i: integer;  vStopSearch: Boolean;begin  vStopSearch := False;  vSourceDirs := TStringList.Create;  vDestDirs := TStringList.Create;  try    vFinished := FindFirst(ADir + '*.*', 63, vFound);    while (vFinished = 0) and not (vStopSearch) do    begin      if (vFound.Name <> '.') and (vFound.Name <> '..') then      begin        if (vFound.Attr and faDirectory) = faDirectory then        begin              //取得子目录名          vSourceDirs.Add(ADir + vFound.Name + '\');        end        else        begin        //只取当前目录下的文件名          if (vFound.Attr and faDirectory) <> faDirectory then begin            if (vFound.Name <> '') and (UpperCase(ExtractFileExt(vFound.Name)) = UpperCase(vType)) then            begin              AFileItems.Add(ADir + vFound.Name)            end;          end;        end;      end;      vFinished := FindNext(vFound);    end;    FindClose(vFound);//  取得子目录中的文件名    if not vStopSearch then      for i := 0 to vSourceDirs.Count - 1 do      begin        SearchFileExList(vSourceDirs[i],'.DLL',AFileItems);      end;  finally    vSourceDirs.Free;    vDestDirs.Free;  end;end;


 

加入另一种遍历目录的方法

   

 procedure GetFileCount(ADir: string);  var    vNewDir, vFullName: string;    vSearchrec: TSearchRec;  begin    vNewDir := IncludeTrailingPathDelimiter(ADir);    if FindFirst(vNewDir + '*.*', faAnyFile-fasysFile, vSearchrec) = 0 then    begin      repeat        vFullName := vNewDir + vSearchrec.Name;        if (vSearchrec.Name <> '.') and (vSearchrec.Name <> '..') then        begin          if DirectoryExists(vFullName) then            GetFileCount(vFullName)          else            vCount := vCount + 1;        end;      until FindNext(vSearchrec) <> 0;    end;  end;


 

原创粉丝点击