遍历文件夹下所有的文件名
来源:互联网 发布:matlab修改矩阵元素 编辑:程序博客网 时间:2024/05/22 16:53
源码下载地址:http://download.csdn.net/download/fyssqzh555/6625627
#pragma once#include "BrowseDir.h"class CStatDir :public CBrowseDir{protected: int m_nFileCount; //保存文件个数 int m_nSubdirCount; //保存子目录个数 public: //缺省构造器 CStatDir();//返回文件个数 int GetFileCount();//返回子目录个数 int GetSubdirCount();//覆写虚函数ProcessFile,每调用一次,文件个数加1 virtual bool ProcessFile(const char *filename);//覆写虚函数ProcessDir,每调用一次,子目录个数加1 virtual void ProcessDir(const char *currentdir,const char *parentdir);};
#include "StdAfx.h"#include "StatDir.h"using namespace std;CStatDir::CStatDir() { //初始化数据成员m_nFileCount和m_nSubdirCount m_nFileCount=m_nSubdirCount=0; } //返回文件个数 int CStatDir::GetFileCount() { return m_nFileCount; } //返回子目录个数 int CStatDir::GetSubdirCount() { //因为进入初始目录时,也会调用函数ProcessDir, //所以减1后才是真正的子目录个数。 return m_nSubdirCount-1; }//覆写虚函数ProcessFile,每调用一次,文件个数加1 bool CStatDir::ProcessFile(const char *filename){ m_nFileCount++;return CBrowseDir::ProcessFile(filename); } //覆写虚函数ProcessDir,每调用一次,子目录个数加1 void CStatDir::ProcessDir(const char *currentdir,const char *parentdir) { m_nSubdirCount++;CBrowseDir::ProcessDir(currentdir,parentdir); }
#include "stdlib.h" #include "direct.h" #include "io.h" #include "stdio.h" #include "iostream" class CBrowseDir { protected: //存放初始目录的绝对路径,以'/'结尾 char m_szInitDir[_MAX_PATH]; public: //缺省构造器 CBrowseDir(); //设置初始目录为dir,如果返回false,表示目录不可用 bool SetInitDir(const char *dir); //开始遍历初始目录及其子目录下由filespec指定类型的文件 //filespec可以使用通配符 * ?,不能包含路径。 //如果返回false,表示遍历过程被用户中止 bool BeginBrowse(const char *filespec); protected: //遍历目录dir下由filespec指定的文件 //对于子目录,采用迭代的方法 //如果返回false,表示中止遍历文件 bool BrowseDir(const char *dir,const char *filespec); //函数BrowseDir每找到一个文件,就调用ProcessFile //并把文件名作为参数传递过去 //如果返回false,表示中止遍历文件 //用户可以覆写该函数,加入自己的处理代码 virtual bool ProcessFile(const char *filename); //函数BrowseDir每进入一个目录,就调用ProcessDir //并把正在处理的目录名及上一级目录名作为参数传递过去 //如果正在处理的是初始目录,则parentdir=NULL //用户可以覆写该函数,加入自己的处理代码 //比如用户可以在这里统计子目录的个数 virtual void ProcessDir(const char *currentdir,const char *parentdir); };
#include "StdAfx.h"#include "BrowseDir.h"using namespace std;CBrowseDir::CBrowseDir() { //用当前目录初始化m_szInitDir getcwd(m_szInitDir,_MAX_PATH); //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\"); } bool CBrowseDir::SetInitDir(const char *dir) { //先把dir转换为绝对路径 if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL) return false; //判断目录是否存在 if (_chdir(m_szInitDir) != 0) return false; //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\"); return true; } bool CBrowseDir::BeginBrowse(const char *filespec) { ProcessDir(m_szInitDir,NULL); return BrowseDir(m_szInitDir,filespec); } bool CBrowseDir::BrowseDir(const char *dir,const char *filespec) { _chdir(dir); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile=_findfirst(filespec,&fileinfo)) != -1) { do { //检查是不是目录 //如果不是,则进行处理 if (!(fileinfo.attrib & _A_SUBDIR)) { char filename[_MAX_PATH]; strcpy(filename,dir); strcat(filename,fileinfo.name);if (!ProcessFile(filename)) return false; } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } //查找dir中的子目录 //因为在处理dir中的文件时,派生类的ProcessFile有可能改变了 //当前目录,因此还要重新设置当前目录为dir。 //执行过_findfirst后,可能系统记录下了相关信息,因此改变目录 //对_findnext没有影响。 _chdir(dir); if ((hFile=_findfirst("*.*",&fileinfo)) != -1) { do { //检查是不是目录 //如果是,再检查是不是 .(当前目录) 或 ..(父目录) //如果不是,进行迭代 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name,".") != 0 && strcmp (fileinfo.name,"..") != 0){ char subdir[_MAX_PATH]; strcpy(subdir,dir); strcat(subdir,fileinfo.name); strcat(subdir,"\\"); ProcessDir(subdir,dir); if (!BrowseDir(subdir,filespec)) return false; } } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } return true; } bool CBrowseDir::ProcessFile(const char *filename) { return true; } void CBrowseDir::ProcessDir(const char *currentdir,const char *parentdir) { }
0 0
- 遍历文件夹下所有的文件名
- 文件夹下的所有文件名
- IOS-遍历文件夹下面的所有文件名
- c++遍历文件夹,获取文件夹下所有文件名
- 如何读取文件夹下的所有文件名
- 获取文件夹下的所有文件名
- C++ 获取文件夹下的所有文件名
- c++读取文件夹下的所有文件名
- 获取文件夹下的所有文件名
- flex获取文件夹下的所有文件名
- C++ 获取文件夹下的所有文件名
- MFC获取文件夹下的所有文件名
- C++获取文件夹下的所有文件名
- 获取文件夹下的所有文件名
- MFC获取文件夹下的所有文件名
- MFC获取文件夹下的所有文件名
- 枚举一个文件夹下的所有文件名
- C++ 获取文件夹下的所有文件名
- 程序员必知的10大基础实用算法
- iostat 命令详解
- nova挂载cinder卷流程分析
- AutoMapper 基本用法
- Oracle 分区索引
- 遍历文件夹下所有的文件名
- UI 类设计的网址
- POJ 3352 边-双连通 HDU 2767 强连通
- POJ 2996 Help Me with the Game
- Chrome调试js出现Uncaught SyntaxError: Unexpected identifier
- sublimeText2字体主题一键安装包
- C++内部数据类型和非内部数据类型
- 浏览器全屏效果
- POJ.3176.Cow Bowling