CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

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

楼主lsk2000(雨天)2003-08-01 17:43:52 在 Delphi / 数据库相关 提问

可以的话,我想根据扩展名进行筛选,请大家帮忙看看。 问题点数:50、回复次数:6Top

1 楼ljmanage(过客)回复于 2003-08-01 19:00:25 得分 15

用一个循环,我这有个把文件夹里的文件全部加到树上的例子,你自己改改吧,  
  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;Top

2 楼newsofter(横空出世小霸王)回复于 2003-08-01 19:19:37 得分 15

//可以参阅  
  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;  
  Top

3 楼zousoft(菜菜鸟的战斗诗歌)回复于 2003-08-01 23:43:48 得分 0

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;Top

4 楼lqxjlz(星际浪子)回复于 2003-08-02 00:05:59 得分 0

gzTop

5 楼chenfei200(天堂鸟)回复于 2003-08-02 09:42:21 得分 5

用WINDOWS   API库函数来做Top

6 楼FrameSniper(http://naoku.net/blogs/framesniper/)回复于 2003-08-02 12:37:36 得分 15

http://expert.csdn.net/Expert/topic/2100/2100254.xml?temp=.2988092  
   
  看看我在这个帖子里面的回复,稍微改动一下就可以了!Top

相关问题

  • 如何得到路径和文件名!
  • 怎样得到一个路径下所有的文件名以及该路径下包含文件夹中的文件名?
  • Application.ExeName 只能得到文件名,怎样得到它的路径+文件名?
  • 传如一个路径(一个文件夹名)怎样得到该文件夹下所有文件名?谢谢。
  • 怎样得到从全路径下得到文件名
  • 请教PB得到路径和修改文件名的方法?
  • 已知文件的路径,如何得到文件名??
  • 在asp.net中怎么得到一个路径(包含文件名)中的文件名(用C#),
  • 如何得到OpenDialog打开的文件名(不带路径的,只要文件名称。)
  • 如何得到一个文件路径的文件名称(不含扩展名)?

关键词

  • 文件
  • sdirname
  • adirectory
  • aroot
  • searchrec
  • tfile
  • hfindfile
  • findfiledata
  • itemtemp
  • lastwriteft

得分解答快速导航

  • 帖主:lsk2000
  • ljmanage
  • newsofter
  • chenfei200
  • FrameSniper

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo