您的位置:首页 > 其它

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

2013-12-21 12:11 302 查看


获取一个文件夹下的所有文件
//不包括文件夹里面的文件

// 注意,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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐