VS64位指定文件目录下的遍历
来源:互联网 发布:pump it up 编辑:程序博客网 时间:2024/06/06 13:47
VS 32位上的文件遍历,在fileFolderPath下找fileExtension的文件。
vector<string> FindAllFile(const string fileFolderPath, const string fileExtension){struct _finddata_t fileInfo; // 文件信息结构体 string fileFolder = fileFolderPath + "\\*." + fileExtension;vector<string> fileName;// 1. 第一次查找 long findResult = _findfirst(fileFolder.c_str(), &fileInfo);if (findResult == -1){_findclose(findResult);return fileName;}// 2. 循环查找 string temp1 = "\\";do{string temp;temp = fileFolderPath.c_str() + temp1 + fileInfo.name;//sprintf(fileName, "%s\\%s", fileFolderPath.c_str(), fileInfo.name);if (fileInfo.attrib == _A_ARCH) // 是存档类型文件 {fileName.push_back(temp);}} while (!_findnext(findResult, &fileInfo));_findclose(findResult);return fileName;}
32位的资料很多,64位系统下的比较少,我用了这个在调用_findnext的时候容易报错。自己查了资料,写了个64位系统下的
#include <io.h>#include <AtlBase.h>std::string ws2s(const std::wstring& ws){std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";setlocale(LC_ALL, "chs");const wchar_t* _Source = ws.c_str();size_t _Dsize = 2 * ws.size() + 1;char *_Dest = new char[_Dsize];memset(_Dest, 0, _Dsize);wcstombs(_Dest, _Source, _Dsize);std::string result = _Dest;delete[]_Dest;setlocale(LC_ALL, curLocale.c_str());return result;}std::wstring s2ws(const std::string& s){setlocale(LC_ALL, "chs");const char* _Source = s.c_str();size_t _Dsize = s.size() + 1;wchar_t *_Dest = new wchar_t[_Dsize];wmemset(_Dest, 0, _Dsize);mbstowcs(_Dest, _Source, _Dsize);std::wstring result = _Dest;delete[]_Dest;setlocale(LC_ALL, "C");return result;}vector<string> FindAllFile(const string path, const string fileExtension){wstring wpath = s2ws(path);LPCTSTR str = wpath.c_str();_tfinddata64_t c_file;intptr_t hFile;TCHAR root[MAX_PATH];_tcscpy(root, str);_tcscat(root, _T("\\*."));wstring wext = s2ws(fileExtension);LPCTSTR str2 = wext.c_str();_tcscat(root, str2);hFile = _tfindfirst64(root, &c_file);vector<string> filenames;if (hFile == -1)return filenames;do{TCHAR *fullPath = new TCHAR[MAX_PATH];_tcscpy(fullPath,str);_tcscat(fullPath, _T("\\"));_tcscat(fullPath, c_file.name);if (c_file.attrib == _A_ARCH){string file = ws2s(fullPath);filenames.push_back(file);}}while (_tfindnext64(hFile, &c_file) == 0);//close search handle_findclose(hFile);return filenames;}
参考点击打开链接
点击打开链接
0 0
- VS64位指定文件目录下的遍历
- VC 遍历指定目录下的文件
- 遍历指定目录下的所有文件
- 遍历指定目录下指定类型文件的函数
- 遍历指定目录下指定类型文件的方法集锦
- delphi遍历指定目录下指定类型文件的函数
- 遍历指定目录下指定格式的文件
- 转载遍历指定目录下所有指定类型的文件
- 使用QDir遍历指定目录下的指定文件
- 遍历某一指定目录下的文件和目录
- C++实现Linux下遍历指定目录下的文件
- C/C++遍历目录下的文件或指定文件
- C/C++遍历目录下的文件或指定文件
- 遍历指定目录下的所有文件和目录, 以及子目录下的文件和目录
- vs64位下不能内嵌汇编
- 遍历目录下的指定扩展名文件的函数
- Java遍历指定的目录下的文件
- 一个遍历指定目录下所有文件的例子
- 负载均衡算法的简单介绍及实现!
- cordova 配置环境时报错问题的解决
- Servlet文件下载例子详解及response的contentType类型大全
- HDOJ--1013
- Android前置摄像头预览并检测人脸,获取人脸区域亮度
- VS64位指定文件目录下的遍历
- C语言数学函数ceil(), floor(), round()
- USB OTG插入检测识别
- 什么是面向过程与面向对象
- navicat使用跳板机连接数据库-ssh(sqlyog同理)
- 分区模型空白格-报表系统报表模型
- IIS7 经典模式和集成模式的区别
- python lambda函数
- .net平台和java虚拟机中托管代码的优点和区别