最近因为科研工作要求,需要对系统生成的一个文件添加一个计时器,来判断如果最近一次修改文件的时间间隔是否超出了我们系统的设定,所以需要用到 MFC 里的CFile 类、CFileStatus 类、CTime类以及 CTimeSpan类。
CFileStatus定义:
/*============================================================================*/
// File status
struct CFileStatus
{
CTime m_ctime; // creation date/time of file
CTime m_mtime; // last modification date/time of file
CTime m_atime; // last access date/time of file
ULONGLONG m_size; // logical size of file in bytes
DWORD m_attribute; // logical OR of CFile::Attribute enum values
TCHAR m_szFullName[_MAX_PATH]; // absolute path name
#ifdef _DEBUG
void Dump(CDumpContext& dc) const;
#endif
};
其中m_ctime、m_mtime、m_atime 分别为文件创建时间,文件最后一次修改时间,文件最后一次访问时间。
在自己的代码里实现文件修改间隔时间查询,其中filename为文件路径
CFileStatus FileStatus;
CTime file_mod_time; // 文件的修改时间
CTime file_curr_time = CTime::GetCurrentTime(); // 当前系统时间
if (CFile::GetStatus(filename, FileStatus))
{
file_mod_time = FileStatus.m_mtime;
}
CTimeSpan file_time_span = file_curr_time - file_mod_time; // 间隔时间
最后得到file_time_span,为文件修改时间的间隔。