获取当前目录下的文件,目录 (封装)
来源:互联网 发布:易云捷讯数据库 编辑:程序博客网 时间:2024/06/07 18:51
// 查找当前目录下的所有目录(不包括当前目录)
void FindAllDir(const char* pCurDir, vector<string>& vtDirs);
// 查找当前目录下的所有文件(不包括子目录),制定查找文件类型,如:*.txt,*.lua,*.*
void FindAllFile(const char* pCurDir, const char* pFileType, vector<string>& vtFiles);
// 查找当前目录下的所有文件(包括子目录),制定查找文件类型,如:*.txt,*.lua,*.*
void FindAllFileE(const char* pCurDir, const char* pFileType, vector<string>& vtFiles);
通过FindAllFileE这个函数可以获取当前目录下和子目录下的所有lua文件,函数调用方法为:
// lua目录char szLuaPath[MAX_PATH] = {0};_snprintf(szLuaPath, MAX_PATH, "%s\\lua\\", GetRootPath());vector<string> luaFiles;CFileAndDirFinder cFileAndDirFinder;cFileAndDirFinder.FindAllFileE(szLuaPath, "*.lua", luaFiles);// 遍历所有lua文件并通过lua_tinker进行加载。vector<string>::iterator itLuaFile = luaFiles.begin();for (; itLuaFile!=luaFiles.end(); ++itLuaFile){lua_tinker::dofile(gL, itLuaFile->c_str());}return true;
/* 函数使用案例:
vector<string> luaFiles;//GetLuaFileList(GetRootPath(), luaFiles);
CFileAndDirFinder cFileAndDirFinder;
//cFileAndDirFinder.FindAllDir(GetRootPath(), luaFiles);
//cFileAndDirFinder.FindAllFile(GetRootPath(), "*.txt", luaFiles);
cFileAndDirFinder.FindAllFileE(GetRootPath(), "*.txt", luaFiles);
vector<string>::iterator it = luaFiles.begin();
for (; it!=luaFiles.end(); ++it)
{
cout << it->c_str() << endl;
}
*/
#pragma onceclass CFileAndDirFinder{public:CFileAndDirFinder(void);~CFileAndDirFinder(void);// 查找当前目录下的所有目录(不包括当前目录)void FindAllDir(const char* pCurDir, vector<string>& vtDirs);// 查找当前目录下的所有文件(不包括子目录),制定查找文件类型,如:*.txt,*.lua,*.*void FindAllFile(const char* pCurDir, const char* pFileType, vector<string>& vtFiles);// 查找当前目录下的所有文件(包括子目录),制定查找文件类型,如:*.txt,*.lua,*.*void FindAllFileE(const char* pCurDir, const char* pFileType, vector<string>& vtFiles);};/* 函数使用案例:vector<string> luaFiles;//GetLuaFileList(GetRootPath(), luaFiles);CFileAndDirFinder cFileAndDirFinder;//cFileAndDirFinder.FindAllDir(GetRootPath(), luaFiles);//cFileAndDirFinder.FindAllFile(GetRootPath(), "*.txt", luaFiles);cFileAndDirFinder.FindAllFileE(GetRootPath(), "*.txt", luaFiles);vector<string>::iterator it = luaFiles.begin();for (; it!=luaFiles.end(); ++it){cout << it->c_str() << endl;}*/
#include "StdAfx.h"#include "FileAndDirFinder.h"CFileAndDirFinder::CFileAndDirFinder(void){}CFileAndDirFinder::~CFileAndDirFinder(void){}void CFileAndDirFinder::FindAllDir( const char* pCurDir, vector<string>& vtDirs ){// 当前目录char szDir[MAX_PATH] = {0};_snprintf(szDir, MAX_PATH, "%s\\*.*", pCurDir);WIN32_FIND_DATA findFileData = {0};HANDLE hFind = FindFirstFile((LPCSTR)szDir, &findFileData);if (INVALID_HANDLE_VALUE == hFind){return ;}do{/* 返回的文件名中会包含"."和".."。“.'代表本目录,".."代表上一层目录。一般情况下需要把这两个名称过滤掉。比如要进行文件删除操作*/if (findFileData.cFileName[0] != '.')//不是当前路径或者父目录的快捷方式{if(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){// 这是一个普通目录char tmpDir[MAX_PATH] = {0};_snprintf(tmpDir, MAX_PATH, "%s\\%s", pCurDir, findFileData.cFileName);vtDirs.push_back(tmpDir);// 递归调用查找子目录FindAllDir(tmpDir, vtDirs);}}}while (FindNextFile(hFind, &findFileData));FindClose(hFind);hFind = INVALID_HANDLE_VALUE;}void CFileAndDirFinder::FindAllFile( const char* pCurDir, const char* pFileType, vector<string>& vtFiles ){// 当前目录char szDir[MAX_PATH] = {0};_snprintf(szDir, MAX_PATH, "%s\\%s", pCurDir, pFileType);WIN32_FIND_DATA findFileData = {0};HANDLE hFind = FindFirstFile((LPCSTR)szDir, &findFileData);if (INVALID_HANDLE_VALUE == hFind){return ;}do{/* 返回的文件名中会包含"."和".."。“.'代表本目录,".."代表上一层目录。一般情况下需要把这两个名称过滤掉。比如要进行文件删除操作*/if (findFileData.cFileName[0] != '.')//不是当前路径或者父目录的快捷方式{// 这是一个文件char tmpFile[MAX_PATH] = {0};_snprintf(tmpFile, sizeof(tmpFile)-1, "%s\\%s", pCurDir, findFileData.cFileName);vtFiles.push_back(tmpFile);}}while (FindNextFile(hFind, &findFileData));FindClose(hFind);hFind = INVALID_HANDLE_VALUE;}void CFileAndDirFinder::FindAllFileE( const char* pCurDir, const char* pFileType, vector<string>& vtFiles ){// 获取子目录vector<string> vtDirs;FindAllDir(pCurDir, vtDirs);// 加入当前目录vtDirs.push_back(pCurDir);vector<string>::iterator itDir = vtDirs.begin();for (; itDir!=vtDirs.end(); ++itDir){FindAllFile(itDir->c_str(), pFileType, vtFiles);}}
源代码下载地址:FileAndDirFinder.rar
- 获取当前目录下的文件,目录 (封装)
- 获取当前目录下的所有文件
- 用批处理获取当前目录下所有文件的路径
- 获取当前工程目录下的ini文件方法
- 获取当前工作目录下某个文件的全路径
- 用批处理获取当前目录下所有文件的路径
- 获取当前工程目录下的ini文件方法
- 用批处理获取当前目录下所有文件的路径
- 获取当前目录下所有文件的文件名
- 获取文件当前目录
- GetCurrentDirectory获取当前目录而不是当前执行文件的目录
- jsp获取当前目录下的文件和目录,获取windows盘符
- jsp获取当前目录下的文件和目录,获取windows盘符
- jsp获取当前目录下的文件和目录,获取windows盘符
- jsp获取当前目录下的文件和目录,获取windows盘符
- 遍历目录,获取目录下的文件
- liunx获取当前目录下的文件和目录的总数
- matlab 获取当前目录下的所有目录
- Visual Studio 2012中的为创建类时的添加注释模板
- 黑马程序员------类加载器
- 二维高斯核的可分离性
- In App Purchase总结
- 设计模式六大原则
- 获取当前目录下的文件,目录 (封装)
- struts2错误信息显示
- 每日雕蟲一技[2013-03-019]卸载Oracle,这样才算彻底
- oracle 集合操作
- centos6.3下安装星际译王stardict3.0
- windows系统上安装与使用Android NDK
- objective-C中的Class(类类型),Selector(选择器SEL),函数指针(IMP)
- Jni中C++和Java的参数传递
- 随想录(程序员和收入) .