遍历文件夹
2016-06-25 18:54
447 查看
利用windows提供的API函数FindFirstFile()和FindNextFile()就可以很轻松的遍历指定目录文件。
相关实现代码如下:
int FindAllFiles(const CString &strFolderPath)
{
int iRet = 0;
TCHAR szFolderPath[MAX_PATH] = {0};
TCHAR szFolderRoot[MAX_PATH] = {0};
WIN32_FIND_DATA findFileData;
_tcscpy(szFolderPath,strFolderPath);
_tcscpy(szFolderRoot,strFolderPath);
_tcscat(szFolderPath,_T("\\*.*"));
HANDLE hFind = ::FindFirstFile(szFolderPath,&findFileData);
if (INVALID_HANDLE_VALUE == hFind)
{
return -1;
}
do
{
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if( (_tcscmp(findFileData.cFileName,_T(".")) != 0 ) &&(_tcscmp(findFileData.cFileName,_T("..")) != 0))
{
TCHAR szFile[MAX_PATH] = {0};
PathCombine(szFile,szFolderRoot,findFileData.cFileName);
FindAllFiles(szFile);
}
}
else
{
CString strfile = strFolderPath + _T("\\") + findFileData.cFileName;
_tprintf(_T("%s\\%s \r\n"),strFolderPath,findFileData.cFileName);
}
} while (::FindNextFile(hFind,&findFileData));
FindClose(hFind);
return iRet;
}
相关实现代码如下:
int FindAllFiles(const CString &strFolderPath)
{
int iRet = 0;
TCHAR szFolderPath[MAX_PATH] = {0};
TCHAR szFolderRoot[MAX_PATH] = {0};
WIN32_FIND_DATA findFileData;
_tcscpy(szFolderPath,strFolderPath);
_tcscpy(szFolderRoot,strFolderPath);
_tcscat(szFolderPath,_T("\\*.*"));
HANDLE hFind = ::FindFirstFile(szFolderPath,&findFileData);
if (INVALID_HANDLE_VALUE == hFind)
{
return -1;
}
do
{
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if( (_tcscmp(findFileData.cFileName,_T(".")) != 0 ) &&(_tcscmp(findFileData.cFileName,_T("..")) != 0))
{
TCHAR szFile[MAX_PATH] = {0};
PathCombine(szFile,szFolderRoot,findFileData.cFileName);
FindAllFiles(szFile);
}
}
else
{
CString strfile = strFolderPath + _T("\\") + findFileData.cFileName;
_tprintf(_T("%s\\%s \r\n"),strFolderPath,findFileData.cFileName);
}
} while (::FindNextFile(hFind,&findFileData));
FindClose(hFind);
return iRet;
}
相关文章推荐
- Android Manifest 用法
- 什么是 GraphQL?
- Spark RDD API详解(一) Map和Reduce
- 如何重装TCP/IP协议
- Spring Boot 开发微服务
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- lwn拾遗:[sn3218 led drivers]-api解释-1
- 使用Windows原生命令一键清空剪贴板
- 页面元素查找之Selectors API
- windows用windeployqt发布qt quick application程序
- 利用开源软件打造自己的全功能远程工具
- Windows 8虚拟机不能全屏的解决方法