怎么能获取指定的磁盘目录中有多少子目录和文件以及子目录和文件列表?

解决方案 »

  1.   

    这段代码可以获得所有文件,文件夹也一样,你看一下注释吧unit unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, StdCtrls, DBCtrls, Mask, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure search(dir:string);
    var
      targetpath:string;{目标路径名}
      sr:TsearchRec;
    begin
      {第一阶段:找出初始dir目录下的所有文件,
      其中dir变量值由edit1的Text属性确定}  targetpath:=extractfilepath(dir);{分解出目标路径名}
      if findfirst(dir,faanyfile,sr)=0 then
      repeat
       if((sr.name<>'.')and(sr.name<>'..'){排除父目录和本目录两个假文件}
       and((filegetattr(targetpath+sr.name)and fadirectory)<>fadirectory)){只取文件}
       then
         form1.memo1.Lines.Add(targetpath+sr.name);{在memo中添加找到的文件}
      until findnext(sr)<>0;  if findfirst(dir,faanyfile,sr)=0 then
      repeat
       if((sr.name<>'.')and(sr.name<>'..')){排除父目录和本目录两个假文件}
       and((filegetattr(targetpath+sr.name)and fadirectory)=fadirectory){排除文件}
       then
         search(targetpath+sr.name+'\*.*');{递归调用}
      until findnext(sr)<>0;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      memo1.Clear;{清除数据表memo字段内容}
      search(Edit1.Text);{调用Search()函数}
      MessageDlg('文件搜索完毕!',mtInformation,[mbOk],0);{结束提示}
    end;end.
      

  2.   

    如果你嫌便利慢的话,可以用shell做delphi自带例子
    vitruallistview好象叫这个在delphi的demo目录下(D5)