delphi 获取一个文件夹下的所有文件

2022-10-09 11:30:17 作者:admin

本文整理自网络,侵删。

 

获取一个文件夹下的所有文件//不包括文件夹里面的文件// 注意,path后面不要有要有'\';//  Memo1.Lines := Searchfile('C:\Users\Admin\Desktop\名人格言\Win32\Release\Data');function Searchfile(path: string): TStringList;var  SearchRec: TSearchRec;  found: integer;begin  Result := TStringList.Create;  found := FindFirst(path + '\' + '*.*', faAnyFile, SearchRec);  while found = 0 do  begin    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and      (SearchRec.Attr <> faDirectory) then      Result.Add(SearchRec.Name);    found := FindNext(SearchRec);  end;  FindClose(SearchRec);

end;


获取一个文件夹下的所有文件//包括文件夹里面的文件uses Masks;
// 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;
// 遍历目录及子目录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.FormCreate(Sender: TObject);begin  Memo1.Lines.Clear;  GetFileListEx('C:\Users\Admin\Desktop\名人格言\Win32\Release\Data', '*.txt',Memo1.Lines, False);end;

在线咨询 拨打电话