怎样批量获取文件名 有一个文件夹中的100张jpg图片现在我要一键获取这些图片的文件名请问高手们,怎样才能做到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/wutaozhao/article/details/6044067 findfirstfile得到第一个文件,返回一个handle然后不断调用findnextfile,每次都传上一个得到的handle直到handle返回0伪代码就是h = findfirstfile()while (h != 0){ h = findnextfile()} 枚举所有文件名而已。。CFindFile void CSetDlg::myDeleteDirectory(CString directoryPath){ CFileFind finder; CString szPath; szPath = directoryPath+_T("/*.*"); BOOL bWorking = finder.FindFile(szPath); while (bWorking) { bWorking = finder.FindNextFile(); if (finder.IsDots()) { continue; } if (finder.IsDirectory()) { myDeleteDirectory(finder.GetFilePath()); RemoveDirectoryW(finder.GetFilePath()); } else{ DeleteFile(finder.GetFilePath()); } }} 给你一个函数吧,第一个参数传文件夹的全路径,第二个串文件类型(*.png),得到的文件名放在第三个参数里面,可以参考下。BOOL SysNormalSet::GetFileName(char* path, char* extension, vector<string>& files){ HANDLE hFind; WIN32_FIND_DATA wfData; TCHAR tchar_filePattern[MAX_PATH]={0}; char filePattern[MAX_PATH]={0}; char subDir[MAX_PATH]={0}; char fileName[MAX_PATH]={0}; sprintf(filePattern, "%s\\%s", path, extension); MultiByteToWideChar(CP_ACP,0,filePattern,-1,tchar_filePattern,MAX_PATH); hFind = FindFirstFile(tchar_filePattern,&wfData); if(hFind == INVALID_HANDLE_VALUE) { //fwprintf(fp,_T("No file is found.\n")); return(FALSE); } do { switch(wfData.dwFileAttributes) { case FILE_ATTRIBUTE_DIRECTORY://目录 if(lstrcmp(wfData.cFileName,_T(".")) && lstrcmp(wfData.cFileName,_T("..")))//排除当前目录和上级目录 { WideCharToMultiByte(CP_ACP,0,wfData.cFileName,-1,fileName,MAX_PATH,NULL,NULL); sprintf(subDir,"%s\\%s",path,fileName); GetFileName(subDir,extension,files);//递归调用,这是遍历的基础 } break; default: WideCharToMultiByte(CP_ACP,0,wfData.cFileName,-1,fileName,MAX_PATH,NULL,NULL); files.push_back(fileName); break; } }while(FindNextFile(hFind,&wfData)); FindClose(hFind); //关闭查找句柄 return(TRUE);} MFC和网页通信 关于网络发送 CWnd问题,100分送. 关于manifest程序的部署3 如何对容器里面的数据成员按照大小排序? 有关SMS,本人已有初步解决方案,希望有经验的高手指点-----心急 控件无法响应wm_create事件 有谁知道MYSQL FOR win怎么装,装完说不能连到server. 有人讲讲进程句柄和进程ID的区别? 基于对话的文件是那个语句创建的?? 求教重载CPropertySheet的OnInitiDialog()的问题!! 怎么实现一个系统漏洞离线扫描程序?(如微软系统补丁安装与未安装情况。)
然后不断调用findnextfile,每次都传上一个得到的handle直到handle返回0伪代码就是
h = findfirstfile()
while (h != 0)
{
h = findnextfile()
}
void CSetDlg::myDeleteDirectory(CString directoryPath)
{
CFileFind finder;
CString szPath;
szPath = directoryPath+_T("/*.*");
BOOL bWorking = finder.FindFile(szPath);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots())
{
continue;
}
if (finder.IsDirectory())
{
myDeleteDirectory(finder.GetFilePath());
RemoveDirectoryW(finder.GetFilePath());
}
else{
DeleteFile(finder.GetFilePath());
}
}
}
BOOL SysNormalSet::GetFileName(char* path, char* extension, vector<string>& files)
{
HANDLE hFind;
WIN32_FIND_DATA wfData;
TCHAR tchar_filePattern[MAX_PATH]={0};
char filePattern[MAX_PATH]={0};
char subDir[MAX_PATH]={0};
char fileName[MAX_PATH]={0}; sprintf(filePattern, "%s\\%s", path, extension);
MultiByteToWideChar(CP_ACP,0,filePattern,-1,tchar_filePattern,MAX_PATH);
hFind = FindFirstFile(tchar_filePattern,&wfData);
if(hFind == INVALID_HANDLE_VALUE)
{
//fwprintf(fp,_T("No file is found.\n"));
return(FALSE);
}
do
{
switch(wfData.dwFileAttributes)
{
case FILE_ATTRIBUTE_DIRECTORY://目录
if(lstrcmp(wfData.cFileName,_T(".")) && lstrcmp(wfData.cFileName,_T("..")))//排除当前目录和上级目录
{
WideCharToMultiByte(CP_ACP,0,wfData.cFileName,-1,fileName,MAX_PATH,NULL,NULL);
sprintf(subDir,"%s\\%s",path,fileName);
GetFileName(subDir,extension,files);//递归调用,这是遍历的基础
}
break;
default:
WideCharToMultiByte(CP_ACP,0,wfData.cFileName,-1,fileName,MAX_PATH,NULL,NULL);
files.push_back(fileName);
break;
}
}while(FindNextFile(hFind,&wfData));
FindClose(hFind); //关闭查找句柄
return(TRUE);
}