首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> VC++专区 -> 文章内容 退出登录 用户管理
投票调查
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· kalman filter 卡尔...
· Windows2000终端服务...
相关文章
· 怎么用CFileDialog或...
用CFileFind类实现的目录树遍历
作者:佚名  来源:vscodes.com整理  发布时间:2005-12-16 13:50:16  发布人:Polaris

减小字体 增大字体

用CFileFind类实现的目录树遍历作者:崔晓亮

目录树遍历顾名思义就是把目录树中所有的目录及文件依次查找一遍,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(" %s", run_find.GetFilePath());
}
}
run_find.Close();
return;
}


End of《用CFileFind类实现的目录树遍历》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“用CFileFind类实现的目录树遍历”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.