获取目录的最新文件时遇到问题。
除非该文件夹中只有一个文件,否则我的代码工作正常。
我正在使用CFileFind
类来完成所有这些操作。我查看了Microsoft文档,并说.GetFileName
只能在FindNextFile
之后调用。如果有人能解决,我将非常感激。
这是我的代码:
std::string getLatestFile(std::string directory, const std::string& extension) {
FILETIME mostRecent = { 0, 0 };
FILETIME curDate;
std::string name;
CFileFind finder;
if (!CheckIfDirectory(directory))
return "";
ensureProperTermination(directory);//this just makes sure that the path is "\\" terminated
if (extension[0] == '.')
finder.FindFile((directory + "*" + extension).c_str());
else
finder.FindFile((directory + "*." + extension).c_str());
while (finder.FindNextFile())
{
finder.GetCreationTime(&curDate);
if (CompareFileTime(&curDate, &mostRecent) > 0)
{
mostRecent = curDate;
name = finder.GetFileName().GetString();
}
}
return directory + name;
}
答案 0 :(得分:2)
这样做:
130
因此呼叫将如下所示:
void GetAllFilesNames(const CString& sMask, CStringArray& files)
{
CFileFind finder;
BOOL bWorking = finder.FindFile(sMask);
while (bWorking)
{
bWorking = finder.FindNextFile();
// skip . and .. files
if (!finder.IsDots())
{
files.Add(finder.GetFileName());
}
}
}
在您的情况下,它将如下所示:
CStringArray Files;
GetAllFilesNames(_T("C:\\Test\\*.txt"), Files);
}