windows下遍历文件夹
2024-10-09 02:16:24
函数:
HANDLE WINAPI FindFirstFile(
_In_ LPCTSTR lpFileName,
_Out_ LPWIN32_FIND_DATA lpFindFileData
);
BOOL WINAPI FindNextFile(
_In_ HANDLE hFindFile,
_Out_ LPWIN32_FIND_DATA lpFindFileData
);
@ LPCTSTR与char *的转换
参考资料:TCHAR与char的互转
LPCTSTR会根据当前的字符集进行自适应:如果为ANSI,LPCTSTR = const char *;如果为Unicode,LPCTSTR = const wchar_t *;
但LPCTSTR = const wchar_t *时,需要使用WideCharToMultiByte() / MultiByteToWideChar()函数;
@ FindFirstFile()
由这个函数返回的句柄可以作为一个参数用于FindNextFile函数。这样一来,就可以方便的枚举出与lpFileName参数指定的文件名相符的所有文件。
@ 核心代码
void GetRawImagePath(TCHAR* folder, std::vector<TCHAR *> &image_path)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
TCHAR path[];
lstrcpy(path, folder);
lstrcat(path, _T("\\"));
lstrcat(path, _T("*.*")); /**必须加*.*才能搜索文件夹下所有文件*/ hFind = FindFirstFile(path, &FindFileData);
if (INVALID_HANDLE_VALUE == hFind)
{
std::cout << "FindFirstFile failed:" << GetLastError() << std::endl;
return;
} do{
if (FindFileData.cFileName[] == '.')
continue; if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
std::cout << "directory" << std::endl;
TCHAR subpath[];
lstrcpy(subpath, folder);
lstrcat(subpath, _T("\\"));
lstrcat(subpath, FindFileData.cFileName);
GetRawImagePath(subpath, image_path);
}
else
{
std::cout << "file" << std::endl;
TCHAR *path = new TCHAR[];
lstrcpy(path, folder);
lstrcat(path, _T("\\"));
lstrcat(path, FindFileData.cFileName);
image_path.push_back(path);
} } while (FindNextFile(hFind, &FindFileData)); FindClose(hFind);
}
最新文章
- 【原】通过JS打开IE新tab(非Window)的解决方案
- Jmeter MySQL数据库性能测试
- mysql error: (2006, &#39;MySQL server has gone away&#39;)
- 使用Adobe Edge Inspect在各种设备中轻松测试同一页面
- 如何查看linux内核的版本号?
- 深入说明HDR
- sbt 配置
- USACO Section 4.3 Street Race(图的连通性+枚举)
- POJ2796/DP/单调栈
- 编写第一个ROS(创建工作空间workspace和功能包package)
- iOS关于友盟分享弹不出面板问题
- SVN汉化教程2017.10.6
- go语言nsq源码解读六 tcp.go、tcp_server.go
- c# Lambda操作类封装
- angular $digest 运行10次货10次以上会抛出异常
- Ubuntu Server 16.04设置WiFi
- 必须知道的Spring Boot中的一些Controller注解
- CUDA ---- Warp解析
- Codeforces Round #396 (Div. 2) C. Mahmoud and a Message dp
- seo 基础
热门文章
- CF633(div.2)B. Sorted Adjacent Differences
- CF633(div.2)C. Powered Addition
- ssl &; ike/ipsec
- python通俗讲解闭包
- Linux c++ vim环境搭建系列(6)——CMakeLists.txt多文档多目录组织方法和编写示例
- undefined 和 not defined
- stand up meeting 1/20/2016
- 对短路变形POJ3615
- Redisson 实现分布式锁的原理分析
- jdbctemplate打印sql