У меня есть код, который удаляет некоторые файлы на основе сравнения time_t с последней датой доступа, и я ищу, как написать метод SetLastAccessTime для использования в моем модульном тесте.
Вот мой Get:
bool GetLastAccessTime(const std::string &filename, time_t& lastAccessTime)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(filename.c_str(), &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
return false;
FILETIME fTime = FindFileData.ftLastAccessTime;
FindClose(hFind);
SYSTEMTIME sTime;
FileTimeToSystemTime(&fTime, &sTime);
struct tm tmTime;
tmTime.tm_hour = sTime.wHour;
tmTime.tm_min = sTime.wMinute;
tmTime.tm_mday = sTime.wDay;
tmTime.tm_mon = sTime.wMonth;
tmTime.tm_sec = sTime.wSecond;
tmTime.tm_year = sTime.wYear - 1900;
time_t t = mktime(&tmTime);
lastAccessTime = t;
return true;
}
Я полагаю, я делаю наоборот?Я даже не совсем уверен, где я хочу оказаться.
Я бы предпочел сделать что-то вроде этого:
boost::filesystem::path p(filename)
std::time_t t = boost::filesystem::last_access_time(p);
но этого, кажется, не существует, изчто я смог найти (хотя есть last_write_time).Если есть какая-то другая технология boost :: filesystem, которую я пропустил, я, безусловно, открыт для этого.
Система: Win32 (XP), библиотеки Boost: 1.44 v2, Dev env: Visual Studio TS 2008