获取指定目录下的所有指定格式文件,返回的列表将按照创建时间排序
注意:文件最早的在最前面
#include "shlwapi.h"
#pragma comment(lib,"shlwapi.lib")
#pragma comment(lib, "Version.lib ")
#include <iostream>
#include <windows.h>
#include <algorithm>
#include <time.h>
#include <io.h>
#include <fstream>struct tagFileInfo
{ULONG uLen;int nCreateTime;int nModifyTime;string strFileName;
};// // 获取指定目录下的所有指定格式文件,返回的列表将按照创建时间排序,最早的在最前面
bool getDirFiles(string strDir, vector<tagFileInfo>& vecFiles,string strSuffixName)
{if (strDir.empty() || !isExistFile(strDir, true)){return false;}vecFiles.clear();string strPath = strDir + "*.*" + strSuffixName;// 文件信息struct _finddata_t _fileInfo;// 文件句柄intptr_t hFile = _findfirst(strPath.c_str(), &_fileInfo);if (-1 != hFile){do{string strFileName = strDir + string(_fileInfo.name);if (isExistFile(strFileName)){tagFileInfo _tagInfo;_tagInfo.nCreateTime = static_cast<int>(_fileInfo.time_create);_tagInfo.nModifyTime = static_cast<int>(_fileInfo.time_write);_tagInfo.uLen = static_cast<int>(_fileInfo.size);_tagInfo.strFileName = strFileName;vecFiles.push_back(_tagInfo);}} while (0 == _findnext(hFile, &_fileInfo));}return true;
}
调用该函数示例:
#include <vector>using namespace std;string m_strDir = "XXX/XX/XX";//目标目录vector<tagFileInfo> vecFiles;
getDirFiles(m_strDir, vecFiles, "log");