csdn10年中间经典帖子
源代码在线查看: csdn_文档中心_用cfilefind类实现的目录树遍历.htm
CSDN_文档中心_用CFileFind类实现的目录树遍历
href="CSDN_文档中心_用CFileFind类实现的目录树遍历.files/csdn.css" rel=stylesheet>
.title0 {
COLOR: #ffffff; FONT-FAMILY: arial; FONT-SIZE: 17px; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
A.title2:link {
COLOR: #000000; TEXT-DECORATION: none
}
A.title2:visited {
COLOR: #000000; TEXT-DECORATION: none
}
A.title2:active {
COLOR: #ff0000; TEXT-DECORATION: none
}
A.title2:hover {
COLOR: #ff0000; TEXT-DECORATION: none
}
function submitlog(sign)
{
var types=document.alogon.type.options[document.alogon.type.selectedIndex].value;
if (document.alogon.name.value!="" && document.alogon.pass.value!="")
{
if (types!="1")
document.alogon.action="http://www.csdn.net/member/logon.asp";
else
document.alogon.action="http://expert.csdn.net/member/logon.asp";
if(sign)
document.alogon.submit();
//return true;
}
else
{
if (document.alogon.name.value=="")
alert("请输入用户名!");
if (document.alogon.pass.value=="")
alert("请输入密码");
return false;
}
return true;
}
function GetMyPass()
{
if (document.alogon.name.value!="")
{
document.alogon.action="http://www.csdn.net/member/getpass.asp";
document.alogon.submit();
}
else
{
alert("请在姓名输入框里输入用户名或注册EMAIL!");
}
}
// -->
href="http://www.csdn.net/member/login.asp">登
录.. target=_blank>[注 册] href="http://www.csdn.net/member/login.asp"> color=#ffff33>忘记密码 href="http://www.csdn.net/member/logonout.asp"> color=#ffff33>注销登录
src="CSDN_文档中心_用CFileFind类实现的目录树遍历.files/top_1.gif" width=20>
color=#ffffff> class=FormText_1 name=type> 新闻标题
软件名称 商品名称 value=4>文档标题 职位名称
src="CSDN_文档中心_用CFileFind类实现的目录树遍历.files/csdn.gif" width=120>
var rand = Math.random().toString();
var ordval = parseInt(rand.substring(2,4));
function Showad(width)
{
if(width=='468')
{
document.write(" ");
return;
}
if(width=='120')
{
document.write("");
return;
}
return;
}
Showad('468')
Showad('120')
class=title0>csdn.net
width=770>
scrollDelay=80>
document.write("");
document.ns = navigator.appName == "Netscape"
tmpDate = new Date();
date = tmpDate.getDate();
month= tmpDate.getMonth() + 1 ;
if(document.ns)
{
year1=tmpDate.getYear()
year= year1.toString().substr(1,2);
}
else
year= tmpDate.getYear();
document.write(year);
document.write(".");
document.write(month);
document.write(".");
document.write(date);
// -->
CSDN - href="http://www.csdn.net/develop/">文档中心 - color=#003399>Visual C++
color=#ffffff>标题
用CFileFind类实现的目录树遍历 ghj1976(转贴)
关键字
用CFileFind类实现的目录树遍历
color=#ffffff>出处
href="http://www.vckbase.com/article/files/1.htm">http://www.vckbase.com/article/files/1.htm
作者: href="mailto:nemo2060@sina.com">崔晓亮
目录树遍历顾名思义就是把目录树中所有的目录及文件依次查找一遍,WINDOWS里的文件查找程序和SafeClean
Utilities(环保卫士)等都用到了目录树遍历。我们当然也可以在自己的程序中加入这一功能。下面就是该算法的源代码。代码不长,应该很好懂。大家只要在工程中添加一个
Search 类再将代码拷贝到文件中就可以了。调用时用如下代码: Search find("c:\", "*.exe");
find.Start(); 按 F5 运行后可以在调试信息窗口看到输出,如有不妥之处还望各位来信指教。 一、文件
Search.h // Search.h: interface for the Search class.
////////////////////////////////////////////////// ... class
Search { public: Search(CString strFilePath, CString
strFileName); void Start(); virtual ~Search(); private:
void Run(); char m_szOldDir[MAX_PATH]; // 遍历前的起始目录
CString m_strFileName; };二、文件 Search.cpp //
Search.cpp: implementation of the Search class.////////////////////
#include "stdafx.h" #include "Search.h" #include
"direct.h" Search::Search(CString strFilePath, CString
strFileName) { getcwd(m_szOldDir, MAX_PATH); // 保存遍历前的起始目录
if(chdir((LPCTSTR)strFilePath) == -1) // 进入指定目录
AfxMessageBox("路径错误");m_strFileName = strFileName; }
//---------------------------------------------------------------------
void Search::Start() { BOOL ans; CFileFind find;
Run(); // 在每一个目录下执行自定义的操作 ans = find.FindFile("*.*");
while(ans) { ans = find.FindNextFile(); // 查找下一个文件
// 查找到的如果是目录并且不是 . 或 .. if((find.IsDirectory() == TRUE)
&& (find.IsDots() != TRUE)) {
chdir((LPCTSTR)find.GetFilePath()); // 如果是目录则进入继续查找 Start();
// 递归调用 chdir(".."); // 返回后回到上一层目录继续查找 } } // End of
while find.Close(); return; }
//---------------------------------------------------------------------
Search::~Search() { chdir(m_szOldDir); // 返回遍历前的起始目录 }
//---------------------------------------------------------------------
void Search::Run() { BOOL run_ans; CFileFind
run_find; // m_strFileName 就是 Search 构造函数的第二个参数 run_ans =
run_find.FindFile(m_strFileName); while(run_ans) {
run_ans = run_find.FindNextFile(); if(!run_find.IsDots())
{ // TODO: 请在这里添加你的代码 TRACE("\n%s", run_find.GetFilePath());
} } run_find.Close(); return;
}
width=770>
color=#ffffff>对该文的评论
width=770>
color=#ffffff>我要评论
你没有登陆,无法发表评论。 请先 href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=739">登陆
href="http://www.csdn.net/expert/zc.asp">我要注册
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介 - href="http://www.csdn.net/intro/intro.asp?id=5">广告服务 - href="http://www.csdn.net/map/map.shtm">网站地图 - href="http://www.csdn.net/help/help.asp">帮助信息 - href="http://www.csdn.net/intro/intro.asp?id=2">联系方式 - href="http://www.csdn.net/english">English
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"> border=0 height=48 src="CSDN_文档中心_用CFileFind类实现的目录树遍历.files/biaoshi.gif"
width=40>
百联美达美公司 版权所有 京ICP证020026号
Copyright © CSDN.net, Inc. All rights
reserved