打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi 递归算法遍历文件

delphi 递归算法遍历文件

时间:2011-5-26来源:yang 作者: peng点击: 23次

递归算法遍历文件(Delphi)

function EnumFileInRecursion(path:PChar):Longint;stdcall;
var
    searchRec:TSearchRec;
    found:Integer;
    tmpStr:String;
begin
    Result:=0; //查找结果(文件数)
    //加上搜索后缀,得到类似‘c:\*.*‘ 、‘c:\windows\*.*‘的搜索路径
    tmpStr:=StrPas(path)+‘\*.*‘;
    //在当前目录查找第一个文件、子目录
    found:=FindFirst(tmpStr,faAnyFile,searchRec);
    while found=0 do
    //找到了一个文件或目录后
    begin
        //如果找到的是个目录
        if (searchRec.Attr and faDirectory)<>0 then
        begin
            {在搜索非根目录(C:\、D:\)下的子目录时会出现‘.‘,‘..‘的"虚拟目录"
            大概是表示上层目录和下层目录吧。。。要过滤掉才可以}
            if (searchRec.Name <> ‘.‘) and (searchRec.Name <> ‘..‘) then
            begin
                {由于查找到的子目录只有个目录名,所以要添上上层目录的路径
                searchRec.Name = ‘Windows‘;tmpStr:=‘c:\Windows‘;
                加个断点就一清二楚了}
                tmpStr:=StrPas(path)+‘\‘+searchRec.Name;
                //自身调用,查找子目录,递归。。。。
                Result:=Result+EnumFileInRecursion(PChar(tmpStr));
            end;
        end
        //如果找到的是个文件
        {这个也是递归的结束条件,结束条件对于理解递归来说,相当重要}
        else begin
            {Result记录着搜索到的文件数。可是我是用CreateThread创建线程
            来调用函数的,不知道怎么得到这个返回值。。。我不想用全局变量}
            Result:=Result+1;
            //把找到的文件加到Memo控件
            Form1.Memo1.Lines.Add(StrPas(path)+‘\‘+searchRec.Name);
         end;
         //查找下一个文件或目录
        found:=FindNext(searchRec);
    end;
    //释放资源
    FindClose(searchRec);
end;  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
二叉树遍历非递归算法
delphi 获取网络文件大小
使用CFtpFileFind和递归算法来遍历ftp目录
用递归写Win32的文件夹遍历
delphi在目录中搜索文件
在Windows下,如何遍历某目录里所有文件?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服