⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用vc++遍历目录----源码下载网.htm

📁 所谓遍历目录
💻 HTM
📖 第 1 页 / 共 4 页
字号:
                  title="文章标题:Web广告技巧
发布时间:2006-3-23 20:05:06
阅览次数:0" 
                  href="http://www.hsip.cn/article/12/2006/2006032317767.html" 
                  target=_blank>Web广告技巧</A></TD>
                <TD class=showlist22></TD></TR>
              <TR>
                <TD class=showlist21>· <A class=showlist 
                  title="文章标题:我是怎么把工资从400变成40000的&#13;&#10;发布时间:2006-3-23 20:05:04&#13;&#10;阅览次数:3" 
                  href="http://www.hsip.cn/article/12/2006/2006032317768.html" 
                  target=_blank>我是怎么把工资从400变...</A></TD>
                <TD class=showlist21></TD></TR>
              <TR>
                <TD class=showlist22>· <A class=showlist 
                  title="文章标题:简单判别“钓鱼”网站的方法&#13;&#10;发布时间:2006-3-23 20:05:01&#13;&#10;阅览次数:3" 
                  href="http://www.hsip.cn/article/12/2006/2006032317769.html" 
                  target=_blank>简单判别“钓鱼”网站...</A></TD>
                <TD class=showlist22></TD></TR>
              <TR>
                <TD class=showlist21>· <A class=showlist 
                  title="文章标题:解读Windows 死机密码&#13;&#10;发布时间:2006-3-23 20:04:54&#13;&#10;阅览次数:2" 
                  href="http://www.hsip.cn/article/12/2006/2006032317770.html" 
                  target=_blank>解读Windows 死机密码...</A></TD>
                <TD class=showlist21></TD></TR>
              <TR>
                <TD class=showlist22>· <A class=showlist 
                  title="文章标题:[自娱自乐]PR你想要多少就有多少&#13;&#10;发布时间:2006-3-23 20:04:39&#13;&#10;阅览次数:1" 
                  href="http://www.hsip.cn/article/12/2006/2006032317771.html" 
                  target=_blank>[自娱自乐]PR你想要多...</A></TD>
                <TD class=showlist22></TD></TR>
              <TR>
                <TD class=showlist21>· <A class=showlist 
                  title="文章标题:网站推广方法–友情链接&#13;&#10;发布时间:2006-3-23 20:04:37&#13;&#10;阅览次数:2" 
                  href="http://www.hsip.cn/article/12/2006/2006032317772.html" 
                  target=_blank>网站推广方法–友情链...</A></TD>
                <TD class=showlist21></TD></TR>
              <TR>
                <TD class=showlist22>· <A class=showlist 
                  title="文章标题:一搜排名优化技巧&#13;&#10;发布时间:2006-3-23 20:04:35&#13;&#10;阅览次数:2" 
                  href="http://www.hsip.cn/article/12/2006/2006032317773.html" 
                  target=_blank>一搜排名优化技巧</A></TD>
                <TD class=showlist22></TD></TR>
              <TR>
                <TD class=showlist21>· <A class=showlist 
                  title="文章标题:让你的IE轻装上阵&#13;&#10;发布时间:2006-3-23 20:04:33&#13;&#10;阅览次数:0" 
                  href="http://www.hsip.cn/article/12/2006/2006032317774.html" 
                  target=_blank>让你的IE轻装上阵</A></TD>
                <TD class=showlist21></TD></TR>
              <TR>
                <TD class=showlist22>· <A class=showlist 
                  title="文章标题:微软拼音输入法超级技巧&#13;&#10;发布时间:2006-3-23 20:04:25&#13;&#10;阅览次数:3" 
                  href="http://www.hsip.cn/article/12/2006/2006032317775.html" 
                  target=_blank>微软拼音输入法超级技...</A></TD>
                <TD class=showlist22></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD bgColor=#ffffff height=2></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD class=titleback1>&nbsp;&nbsp;&nbsp;相关文章</TD></TR>
        <TR>
          <TD vAlign=top height=100>· <FONT color=#ff0066>[组图]</FONT> <A 
            title=用VC++设计基于ODBC的数据库管理系统 
            href="http://www.hsip.cn/article/12/2006/2006072633134.html"><FONT 
            color=#808080>用VC++设计基于ODBC...</FONT></A><BR>· <A 
            title=用VC++实现http代理 
            href="http://www.hsip.cn/article/12/2006/2006071633077.html">用VC++实现http代理...</A><BR>· 
            <A title=ASP,FSO遍历目录及目录下文件 
            href="http://www.hsip.cn/article/12/2006/2006032432291.html">ASP,FSO遍历目录及...</A><BR>· 
            <A title=SNMP用VC++6.0实现的方法 
            href="http://www.hsip.cn/article/12/2006/2006031428518.html">SNMP用VC++6.0实现的...</A><BR>· 
            <A title=遍历目录以及目录下文件的函数 
            href="http://www.hsip.cn/article/12/2006/2006032426553.html">遍历目录以及目录下...</A><BR>· 
            <A title=利用VC++编程实现程序自动启动 
            href="http://www.hsip.cn/article/12/2006/2006031424078.html">利用VC++编程实现程...</A><BR>· 
            <A title=利用VC++编写Windows95的CPL组件 
            href="http://www.hsip.cn/article/12/2006/2006031424077.html">利用VC++编写Window...</A><BR>· 
            <A title=利用VC++获取异构型数据库库结构信息 
            href="http://www.hsip.cn/article/12/2006/2006031424076.html">利用VC++获取异构型...</A><BR>· 
            <A title=利用VC++开发ASP图像处理组件 
            href="http://www.hsip.cn/article/12/2006/2006031324075.html">利用VC++开发ASP图...</A><BR>· 
            <A title=利用VC++开发所见即所得的打印程序 
            href="http://www.hsip.cn/article/12/2006/2006031424074.html">利用VC++开发所见...</A><BR></TD></TR></TBODY></TABLE></TD>
    <TD class=tableright align=right width=588>
      <TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0 
      cellPadding=0 width=575 border=0>
        <TBODY>
        <TR>
          <TD style="FONT-SIZE: 12pt; COLOR: #ff6600" align=middle 
            height=32>用VC++遍历目录</TD></TR>
        <TR>
          <TD align=middle background=用VC++遍历目录----源码下载网.files/soft_c.gif 
          height=25>作者:佚名&nbsp;&nbsp;来源:不详&nbsp;&nbsp;发布时间:2006-3-14 
            10:38:15&nbsp;&nbsp;发布人:baiyun</TD></TR>
        <SCRIPT language=javascript>
var newasp_fontsize=9;
var newasp_lineheight=12;
</SCRIPT>

        <TR>
          <TD>
            <P align=right><A title=减小字体 
            style="CURSOR: hand; POSITION: relative" 
            onclick='if(newasp_fontsize>8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+"pt";NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+"pt";}'><IMG 
            height=15 src="用VC++遍历目录----源码下载网.files/1.gif" width=15 
            border=0><FONT color=#ff6600>减小字体</FONT></A> <A title=增大字体 
            style="CURSOR: hand; POSITION: relative" 
            onclick='if(newasp_fontsize<64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+"pt";NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+"pt";}'><IMG 
            height=15 src="用VC++遍历目录----源码下载网.files/2.gif" width=15 
            border=0><FONT color=#ff6600>增大字体</FONT></A> </P>
            <DIV class=ContentFont id=NewaspContentLabel 
            style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"><FONT 
            id=font_word 
            style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">
            <DIV style="DISPLAY: inline; FLOAT: left"></DIV>河南洛阳 
            祝晓鹰&nbsp;&nbsp;<BR><BR>---- 
            所谓遍历目录,就是给定一个目录,访问其中的所有文件(包括子目录下的文件)。迭代是比较常用的遍历算法。本文利用C++面向对象的特性,通过一个类CBrowseDir,对目录遍历进行了封装。用户只需掌握该类四个成员函数的用法,就可以在自己的程序中,很方便地实现目录遍历。 
            <BR><BR>---- 
            类CBrowseDir使用了迭代算法。因为算法不是本文重点,笔者不打算展开进一步讨论,对其感兴趣者可参考相关资料。 
            <BR><BR>一、类成员函数说明: <BR><BR>---- bool SetInitDir(const char *dir); 
            <BR><BR>---- 功能:设置要遍历的目录。 <BR><BR>---- 参数:dir 
            指向要遍历的目录,可以使用相对路径,比如"d:..\hawk";还可以使用网络路径,比如"\\wf\d\hawk"(其中wf是主机名,d是共享目录,hawk是目录)。 
            <BR><BR>---- 返回值:返回true,表示设置成功;返回false,说明目录不可用。 <BR><BR>---- bool 
            BeginBrowse(const char *filespec); <BR><BR>---- 
            功能:开始遍历目录中由filespec指定的文件(包括隐藏文件)。 <BR><BR>---- 参数:filespec 
            指定文件类型,可以使用通配符*和?,比如"*.exe"或"a?.*"都是合法参数。注意:filespec中不能包含路径,象"hawk\*.*"是错误的。 
            <BR><BR>---- 返回值:函数返回true,表明已顺利遍历完所有文件;返回false,遍历过程被用户中止。 
            <BR><BR>---- virtual bool ProcessFile(const char *filename); 
            <BR><BR>---- 
            功能:虚函数。每找到一个文件,程序就会调用ProcessFile,并把文件名作为参数传递给函数。如果函数返回false,则强制遍历中止,并导致类成员函数函数BeginBrowse返回false。 
            用户应该覆写此函数,以加入自己的处理代码。 <BR><BR>---- 参数:filename 
            指向一个文件名。注意:filename使用绝对路径。 <BR><BR>---- 返回值:返回true,继续遍历;否则,中止遍历。 
            <BR><BR>---- virtual void ProcessDir (const char *currentdir,const 
            char *parentdir); <BR><BR>---- 
            功能:虚函数。在遍历过程中,每进入一个子目录,程序就会调用ProcessDir,并把目录名及其上一级目录名作为参数传递给函数。如果该目录是成员函数SetInitDir指定的初始目录,则parentdir=NULL。用户可以覆写此函数,以加入自己的处理代码。比如可以在这里统计子目录的个数。 
            <BR><BR>---- 参数:currentdir 指向一个子目录。 <BR>---- parentdir 
            指向currentdir的父目录。 <BR>---- 注意:currentdir和parentdir均使用绝对路径。 
            <BR><BR>二、使用: <BR><BR>---- 
            把类CBrowseDir的头文件BrowseDir.h及实现文件BrowseDir.cpp加到项目(Project)中,然后派生自己的类并覆写虚函数ProcessFile和ProcessDir。遍历目录时,先构造一个派生类对象,用成员函数SetInitDir指定目录,然后调用BeginBrowse开始遍历。 
            <BR><BR>---- 本文提供了一个例子 
            example.cpp,它从CBrowseDir派生出子类CStatDir,通过统计函数ProcessFile及ProcessDir的调用次数,可以得知目录中的文件及子目录个数。程序都有注释,这里就不再罗嗦了。 
            <BR><BR>三、注意事项: <BR><BR>---- 1. 
            类CBrowseDir会改变当前工作目录。同一个相对路径,使用CBrowseDir前后,可能会有不同的含义。因此用户编程时,要小心使用相对路径。 
            <BR><BR>---- 2. 
            如果项目(Project)是一个MFC应用程序,直接加入BrowseDir.h及BrowseDir.cpp会导致编译出错。这是因为缺省情况下,MFC项目使用了预编译头(Precompiled 
            Header),而BrowseDir.h和BrowseDir.cpp是用标准C++语句编写的,没用预编译。一个解决办法是先用类向导生成类CBrowseDir的"架子",再把相应的代码拷贝过去。 
            <BR><BR>---- 本文代码均在Win95、Visual C++ 5.0环境下调试通过。 
            <BR><BR>附源代码:<BR><BR>/**************************************************<BR>&nbsp;&nbsp;&nbsp;这是CBrowseDir的类定义文件 
            BrowseDir.h 
            <BR><BR>/**************************************************<BR>#include 
            "stdlib.h"<BR><BR>class 
            CBrowseDir<BR>{<BR>protected:<BR>//存放初始目录的绝对路径,以'\'结尾<BR>char 
            m_szInitDir[_MAX_PATH];<BR><BR>public:<BR>//缺省构造器<BR>CBrowseDir();<BR><BR>//设置初始目录为dir,如果返回false,表示目录不可用<BR>bool 
            SetInitDir(const char 
            *dir);<BR><BR>//开始遍历初始目录及其子目录下由filespec指定类型的文件<BR>//filespec可以使用通配符 
            * ?,不能包含路径。<BR>//如果返回false,表示遍历过程被用户中止<BR>bool BeginBrowse(const 
            char 
            *filespec);<BR><BR>protected:<BR>//遍历目录dir下由filespec指定的文件<BR>//对于子目录,采用迭代的方法<BR>//如果返回false,表示中止遍历文件<BR>bool 
            BrowseDir(const char *dir,const char 
            *filespec);<BR><BR>//函数BrowseDir每找到一个文件,就调用ProcessFile<BR>//并把文件名作为参数传递过去<BR>//如果返回false,表示中止遍历文件<BR>//用户可以覆写该函数,加入自己的处理代码<BR>virtual 
            bool ProcessFile(const char 
            *filename);<BR><BR>//函数BrowseDir每进入一个目录,就调用ProcessDir<BR>//并把正在处理的目录名及上一级目录名作为参数传递过去<BR>//如果正在处理的是初始目录,则parentdir=NULL<BR>//用户可以覆写该函数,加入自己的处理代码<BR>//比如用户可以在这里统计子目录的个数<BR>virtual 
            void ProcessDir(const char <BR>*currentdir,const char 
            *parentdir);<BR>};<BR><BR><BR>/*********************************************/<BR><BR>这是CBrowseDir的类实现文件 
            BrowseDir.cpp<BR><BR>/***********************************************/<BR>#include 
            "stdlib.h"<BR>#include "direct.h"<BR>#include "string.h"<BR>#include 
            "io.h"<BR><BR>#include 
            "browsedir.h"<BR><BR>CBrowseDir::CBrowseDir()<BR>{<BR>//用当前目录初始化m_szInitDir<BR>getcwd(m_szInitDir,_MAX_PATH);<BR><BR>//如果目录的最后一个字母不是'\',则在最后加上一个'\'<BR>int 
            len=strlen(m_szInitDir);<BR>if (m_szInitDir[len-1] != 
            '\\')<BR>strcat(m_szInitDir,"\\");<BR>}<BR><BR>bool 
            CBrowseDir::SetInitDir(const char *dir)<BR>{<BR>//先把dir转换为绝对路径<BR>if 
            (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL)<BR>return 
            false;<BR><BR>//判断目录是否存在<BR>if (_chdir(m_szInitDir) != 0)<BR>return 
            false;<BR><BR>//如果目录的最后一个字母不是'\',则在最后加上一个'\'<BR>int 
            len=strlen(m_szInitDir);<BR>if (m_szInitDir[len-1] != 
            '\\')<BR>strcat(m_szInitDir,"\\");<BR><BR>return 
            true;<BR>}<BR><BR>bool CBrowseDir::BeginBrowse(const char 
            *filespec)<BR>{<BR>ProcessDir(m_szInitDir,NULL);<BR>return 
            BrowseDir(m_szInitDir,filespec);<BR>}<BR><BR>bool 
            CBrowseDir::BrowseDir<BR>(const char *dir,const char 
            *filespec)<BR>{<BR>_chdir(dir);<BR><BR>//首先查找dir中符合要求的文件<BR>long 
            hFile;<BR>_finddata_t fileinfo;<BR>if 
            ((hFile=_findfirst(filespec,&amp;fileinfo)) != 
            -1)<BR>{<BR>do<BR>{<BR>//检查是不是目录<BR>//如果不是,则进行处理<BR>if 
            (!(fileinfo.attrib &amp; _A_SUBDIR))<BR>{<BR>char 
            filename[_MAX_PATH];<BR>strcpy(filename,dir);<BR>strcat(filename,fileinfo.name);<BR>if 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -