#include <vector>
#include <afxtempl.h>
#include <Shlwapi.h>
#define _VEC_FILE_ std::vector<std::pair<CString, CString>> //保存文件路径和名称容器
/*
* 函数:
* GetSendFilePath(获取需要发送的文件)
* 参数:
* vecFilePath:装载需要发送的文件路径容器
* strFileType:遍历文件类型(*.xml ,*.*,*.jpg等类型)
* 返回值:
* 返回需要发送文件的总数
* ssdwujianhua 2017/06/06
*/
size_t CThreadSanjifenfaReport::GetSendFilePath(_VEC_FILE_ &vecFilePath, CSting strFileType)
{
//遍历当前文件夹中的所有文件
CString strPath = m_sjffInfo.strSaveReportFilePath;
if ( !strPath.IsEmpty() )
{
CFileFind fileFinder;//类CFileFind执行本地文件查找
CString strPicFile;
CString strFilePath;//保存文件路径
CString strFileName;//保存文件名
do
{
if (strPath.Right(1) == TEXT("\\"))
{
int nPos = strPath.ReverseFind(TEXT('\\'));
strPath = strPath.Left(nPos);
}
strPicFile.Format(TEXT("%s\\%s"),strPath,strFileType);
BOOL bWorking = fileFinder.FindFile(strPicFile);
if ( !bWorking )
{
break;
}
while (bWorking)
{
bWorking = fileFinder.FindNextFile();
if (fileFinder.IsDots())//IsDots判断是否为点,由CFileFind对象引用IsDots的意思是:这是一个目录并且不是这个目录本身或者上层目录
{
continue;
}
strFilePath = fileFinder.GetFilePath();//文件的完整路径
strFileName = fileFinder.GetFileName();//文件的名字
if (fileFinder.IsDirectory())//检查是否是文件夹,是返回true,不是返回false
{
//继续遍历目录
continue;
}
else
{
int nPos = strFilePath.ReverseFind(TEXT('.'));
CString strExt = strFilePath.Right(strFilePath.GetLength() - nPos - 1);
if (strExt.CompareNoCase(strFileType) == 0)
{
vecFilePath.push_back(std::pair<CString, CString>(strFilePath, strFileName));
}
}
}
}while(fileFinder.FindNextFile());
fileFinder.Close();
}
return vecFilePath.size();
}