Вы должны перечислить все файлы, получить их последнее изменение времени и сравнить их. Вот мой код:
#include <windows.h>
#include <stdio.h>
int main()
{
WIN32_FIND_DATAW ffd;
wchar_t const* directory = L"D:\\My_GRB_Files\\";
wchar_t currentFile[MAX_PATH], lastModifiedFilename[MAX_PATH];
FILETIME currentModifiedTime, lastModified;
HANDLE hFile;
bool first_file = true;
HANDLE hFind = FindFirstFileW(L"D:\\My_GRB_Files\\*.grb2", &ffd);
if (INVALID_HANDLE_VALUE == hFind)
{
return 255;
}
do
{
if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
wcscpy(currentFile, directory);
wcscat(currentFile, ffd.cFileName);
// open file to read it's last modified time
hFile = CreateFileW(currentFile, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(INVALID_HANDLE_VALUE != hFile)
{
// get it's last write time
if(GetFileTime(hFile, NULL, NULL, ¤tModifiedTime) != 0)
{
if(first_file)
{
lastModified = currentModifiedTime;
wcscpy(lastModifiedFilename, ffd.cFileName);
first_file = false;
}
else
{
// First file time is earlier than second file time.
if(CompareFileTime(&lastModified, ¤tModifiedTime) == -1)
{
lastModified = currentModifiedTime;
wcscpy(lastModifiedFilename, ffd.cFileName);
}
}
}
CloseHandle(hFile);
}
}
}
while (FindNextFileW(hFind, &ffd) != 0);
FindClose(hFind);
wprintf(L"Last modified file is: %s%s", directory, lastModifiedFilename);
}
У меня было настроение, поэтому я закодировал эту функцию для вас. Надеюсь, это поможет вам и другим людям, которые будут посещать эту страницу в будущем. Я закодировал его в блокноте, поэтому извините, если есть ошибка. Удачи.
'FindFirstFile', а затем' FindNextFile' для перечисления всех файлов. Используйте строку '* .grb2' в качестве строки поиска. Или используйте библиотеку C++, если вы хотите быть немного более портативным. –