bool sort_finddata_tByTimeCreateUp(const _finddata_t& f1, const _finddata_t& f2)
{
return f1.time_create < f2.time_create;
}
bool sort_finddata_tByTimeCreateDown(const _finddata_t& f1, const _finddata_t& f2)
{
return f1.time_create > f2.time_create;
}
/*
@ Description:
-- 文件夹中文件名查找获取 支持通配符
@ Input Param:
-- strFilespec 标明文件的字符串,可支持通配符。比如:*.c,则表示当前文件夹下的所有后缀为C的文件。
-- bSortByTimeCreateUp == true 按时间排序 从小(久)到大(新) 反之从大(新)到小(久)
bFindFile == true 仅查找文件, 文件夹/./../丢弃
@ Output :
-- 返回文件信息结构体列表
*/
list<_finddata_t> getFolderAllFileName(const string& strFilespec, const bool& bFindFile, const bool& bSortByTimeCreateUp)
{
list<_finddata_t> listRet;
struct _finddata_t fileInfo;//文件信息的结构体
long handle = _findfirst(strFilespec.c_str(), &fileInfo); //第一次查找
if (-1 == handle) return listRet;
if (!(bFindFile && fileInfo.size == 0)) listRet.push_back(fileInfo);
while (!_findnext(handle, &fileInfo))//循环查找其他符合的文件,直到找不到其他的为止
{
if (bFindFile && fileInfo.size == 0) continue;
listRet.push_back(fileInfo);
}
_findclose(handle);
if (bSortByTimeCreateUp)
{
listRet.sort(sort_finddata_tByTimeCreateUp);
}
else
{
listRet.sort(sort_finddata_tByTimeCreateDown);
}
return listRet;
}