码迷,mamicode.com
首页 > 其他好文 > 详细

遍历目录及子目录

时间:2014-07-29 20:41:22      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   strong   io   for   

遍历目录及子目录


bubuko.com,布布扣
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses Masks;
{$R *.dfm}

//遍历目录及子目录
procedure GetFileListEx(FilePath, ExtMask: string; FileList: TStrings; SubDirectory: Boolean = True);
  function Match(FileName: string; MaskList: TStrings): boolean;
  var
    i: Integer;
  begin
    Result := False;
    for i := 0 to MaskList.Count - 1 do
    begin
      if MatchesMask(FileName, MaskList[i]) then
      begin
        Result := True;
        break;
      end;
    end;
  end;
var
  FileRec: TSearchrec;
  MaskList: TStringList;
begin
  if DirectoryExists(FilePath) then
  begin
    if FilePath[Length(FilePath)] <> ‘\‘ then FilePath := FilePath + ‘\‘;
    if FindFirst(FilePath + ‘*.*‘, faAnyfile, FileRec) = 0 then
    begin
      MaskList := TStringList.Create;
      try
        ExtractStrings([‘;‘], [], PChar(ExtMask), MaskList);
        FileList.BeginUpdate;
        repeat
          if ((FileRec.Attr and faDirectory) <> 0) and SubDirectory then
          begin
            if (FileRec.Name <> ‘.‘) and (FileRec.Name <> ‘..‘) then
              GetFileListEx(FilePath + FileRec.Name + ‘\‘, ExtMask, FileList);
          end
          else
          begin
            if Match(FilePath + FileRec.Name, MaskList) then
              FileList.Add({FilePath +} FileRec.Name);
          end;
        until FindNext(FileRec) <> 0;
        FileList.EndUpdate;
      finally
        MaskList.Free;
      end;
    end;
    FindClose(FileRec);
  end;
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Lines.Clear;
 GetFileListEx(‘Z:\‘, ‘*.*‘, Memo1.Lines, False);
 Caption:=IntToStr(Memo1.Lines.count);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin

 Memo1.Lines.Clear;
 GetFileListEx(‘Z:\‘, ‘*.cs‘,  Memo1.Lines, true);
//GetFileListEx(‘Z:\‘, ‘*.cs;*.txt‘,  Memo1.Lines, true);
 Caption:=IntToStr(Memo1.Lines.count);
end;

end.

 




附件列表

     

    遍历目录及子目录,布布扣,bubuko.com

    遍历目录及子目录

    标签:style   blog   http   color   os   strong   io   for   

    原文地址:http://www.cnblogs.com/xe2011/p/3875859.html

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!