大概需要这样几个:
1、获取某一指定目录下的所有文件(包括子目录中的)
2、获取某一个文件的位置,修改时间等属性
3、判断某一指定目录下是否还有子目录,如果有,都是什么。最好有Dephi的函数,实在没有API的也可以了,谢谢!

解决方案 »

  1.   

    1, FindFirst(), FindNext()
    2, 如果事先不知道文件位置,只能自己用FindFirst(), FindNext()搜索
    3, 也需要用FindFirst(), FindNext()其主页和有个SearchDir控件,支持遍历文件夹
    http://www.ahjoe.net/
      

  2.   

    1.
    procedure SearchFileEx(const Dir, Ext: string; Files: TStrings);
    var
      Found: TSearchRec;
      i: integer;
      Dirs: TStrings;
      Finished: integer;
      StopSearch: Boolean;
    begin
      StopSearch := False;
      Dirs := TStringList.Create;
      Finished := FindFirst(Dir + '*.*', 63, Found);
      while (Finished = 0) and not (StopSearch) do
      begin
        if (Found.Name <> '.') then
        begin
          if (Found.Attr and faDirectory) = faDirectory then
            Dirs.Add(Dir + Found.Name)
          else
            if Pos(UpperCase(Ext), UpperCase(Found.Name)) > 0 then
              Files.Add(Dir + Found.Name);
        end;
        Finished := FindNext(Found);
      end;
      FindClose(Found);
      if not StopSearch then
        for i := 0 to Dirs.Count - 1 do
          SearchFileEx(Dirs[i], Ext, Files);
      Dirs.Free;
    end;
    3
    procedure FindSubDir(DirName: string; FileString: TStrings);
    var
      searchRec: TsearchRec;
    begin
      //找出所有下级子目录。
      if (FindFirst(DirName + '*.*', faDirectory, SearchRec) = 0) then
      begin
        if IsValidDir(SearchRec) then
          FileString.Add(DirName + SearchRec.Name);
        while (FindNext(SearchRec) = 0) do
        begin
          if IsValidDir(SearchRec) then
            FileString.Add(DirName + SearchRec.Name);
        end;
      end;
      FindClose(SearchRec);
    end;function IsValidDir(SearchRec: TSearchRec): Boolean;
    begin
      if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        Result := True
      else
        Result := False;
    end;2
    获取文件属性GetFileAttributes
      

  3.   

    请问u2m(痛并快乐着),SearchFileEx(const Dir, Ext: string; Files: TStrings);
    中的Ext起什么作用?我只看到if Pos(UpperCase(Ext), UpperCase(Found.Name)) > 0 then
    中使用了,意思是这个字符串在文件名中的位置,那Ext最好写什么?为什么还要这个参数?
    谢谢,我急用!!!
      

  4.   

    我给你改了一下
    procedure SearchFileEx(const Dir: string; Files: TStrings);
    var
      Found: TSearchRec;
      i: integer;
      Dirs: TStrings;
      Finished: integer;
      StopSearch: Boolean;
    begin
      StopSearch := False;
      Dirs := TStringList.Create;
      Finished := FindFirst(Dir + '*.*', 63, Found);
      while (Finished = 0) and not (StopSearch) do
      begin
        if (Found.Name <> '.') then
        begin
          if (Found.Attr and faDirectory) = faDirectory then
            Dirs.Add(Dir + Found.Name)
          else
            Files.Add(Dir + Found.Name);
        end;
        Finished := FindNext(Found);
      end;
      FindClose(Found);
      if not StopSearch then
        for i := 0 to Dirs.Count - 1 do
          SearchFileEx(Dirs[i], Files);
      Dirs.Free;
    end;