求教如何得到某一路径下的所有文件名?

lsk2000 2003-08-01 05:43:52
可以的话,我想根据扩展名进行筛选,请大家帮忙看看。
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrameSniper 2003-08-02
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2100/2100254.xml?temp=.2988092

看看我在这个帖子里面的回复,稍微改动一下就可以了!
lqxjlz 2003-08-02
  • 打赏
  • 举报
回复
gz
chenfei200 2003-08-02
  • 打赏
  • 举报
回复
用WINDOWS API库函数来做
zousoft 2003-08-01
  • 打赏
  • 举报
回复
procedure TForm1.Searchit(Dir: string);
var
st: TSearchRec;
sResult: integer;
begin
sResult := FindFirst(Dir+'*.*', faAnyFile, st); //可以把*.*改成你想要的扩展名
while sResult = 0 do begin
if ((st.Attr and faDirectory) <> 0) and (st.Name <> '.') and (st.Name <> '..') then
Searchit(Dir+st.Name+'\');
if (st.Name <> '.') and (st.Name <> '..') then
Memo1.Lines.Add(st.Name);
sResult := FindNext(st);
end;
FindClose(st);
end;
newsofter 2003-08-01
  • 打赏
  • 举报
回复
//可以参阅
uses ShellAPI;
function DoOpenFile(sDirName:String;Flag:Boolean):Boolean;
var
hFindFile:Cardinal;
F:Integer;
//hFindFile:TSearchRec;
tfile,FileName:String;
sCurDir:String[255];
FindFileData:WIN32_FIND_DATA;
CreateFT, LastAccessFT, LastWriteFT: TFileTime;
ST: TSystemTime;
ST1:TDateTime;
begin
sCurDir:=GetCurrentDir;
ChDir(sDirName);
hFindFile:=FindFirstFile('*.*',FindFileData);
if hFindFile<>INVALID_HANDLE_VALUE then
begin
repeat
tfile:=FindFileData.cFileName;
if (tfile='.') or (tfile='..') then
Continue;
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then
begin
if sDirName[Length(sDirName)]<>'\' then
FileName:=sDirName+'\'+tfile
else
FileName:=sDirName+tfile;
DoOpenFile(FileName,Flag);//第归

end else
begin
if Flag=False then
begin
F := CreateFile(Pchar(sDirName+'\'+tfile), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if F=INVALID_HANDLE_VALUE then
begin
ShowMessage('Can not open file!');
Result:=False;
Exit;
end;
//以下处理遍厉到的每个文件
if GetFileTime(F,@CreateFT, @LastAccessFT, @LastWriteFT) then
begin
FileTimeToSystemTime(LastWriteFT, ST);

ST1:=StrToDate(IntToStr(ST.wYear)+'-'+IntToStr(ST.wMonth)+'-'+IntToStr(ST.wDay));
CloseHandle(F);

if ST1-now >FilterDay then
begin
if MoveData(tfile,sDirName)=False then Continue;
end else
Continue
end else
begin
Continue;
CloseHandle(F);
end;
end else
if MoveData(tfile,sDirName)=False then Continue;
end;
//处理完当前文件
until FindNextFile(hFindFile,FindFileData)=False;
Windows.FindClose(hFindFile);
end else
begin
ChDir(sCurDir);
Result:=False;
Exit;
end;
ChDir(sCurDir);
Result:=True;
end;
李_军 2003-08-01
  • 打赏
  • 举报
回复
用一个循环,我这有个把文件夹里的文件全部加到树上的例子,你自己改改吧,
var
SearchRec : TSearchRec;
ItemTemp : TTreeNode;
begin
with ATreeView.Items do
try
BeginUpdate;
if ADirectory[Length(ADirectory)] <> '\' then
ADirectory := ADirectory +'\';
if FindFirst(ADirectory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
ARoot := AddChild(ARoot, SearchRec.Name);
ItemTemp := ARoot.Parent;
DirToTreeView(ATreeView, ADirectory + SearchRec.Name, ARoot, AIncludeFiles);
ARoot := ItemTemp;
end
else if AIncludeFiles then
if SearchRec.Name[1] <> '.' then
AddChild(ARoot, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
finally
EndUpdate;
end;
end;

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧