MFC应用实例:[49]获取修改文件创建时间
1、新建一个基于对话框的应用程序,工程名为FileTime。
![MFC应用实例:[49]获取修改文件创建时间](https://exp-picture.cdn.bcebos.com/03605157935653bb518198481d0b312104617135.jpg)
2、如下图为对话框添加二个按钮,一个编辑框,四个静态文本和三个日历控件。
![MFC应用实例:[49]获取修改文件创建时间](https://exp-picture.cdn.bcebos.com/05e24be983aee8d7eb8b1f5c6b781431deb66635.jpg)
3、为“...”按钮建立响应函数OnBUTTONOpenFile(),在响应函数OnBUTTONOpenFile()中添加一下代码:
void CFileTimeDlg::OnBUTTONOpenFile()
{
char filter[] = "所有文件(*.*)|*.*||";//设置文件类型过滤
CFileDialog fdlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter);//文件对话框
fdlg.m_ofn.lpstrInitialDir = "c:\\"; //设置初始文件目录
if(fdlg.DoModal() == IDOK) //弹出对话框,如果单击的是"OK"按钮
{
//得到打开的文件的文件名显示在编辑框中
GetDlgItem(IDC_EDIT1)->SetWindowText(fdlg.GetPathName());
CFileStatus status;//获取文件相关时间
if(CFile::GetStatus(fdlg.GetPathName(), status))
{
m_createTime = status.m_ctime;//得到创建时间
m_modifyTime = status.m_mtime;//得到修改时间
m_accessTime = status.m_atime;//得到访问时间
UpdateData(false);
}
}
}
![MFC应用实例:[49]获取修改文件创建时间](https://exp-picture.cdn.bcebos.com/332d496699cf025394c2df366b36e29146e85f35.jpg)
4、为设置按钮建立响应函数OnButtonSet(),在响应函数OnButtonSet()中添加一下代码:
void CFileTimeDlg::OnButtonSet()
{
UpdateData(true); //将日期值写入变量中
CString fileName = "";
GetDlgItem(IDC_EDIT1)->GetWindowText(fileName);//获取文件路径名
HANDLE file = CreateFile(fileName, GENERIC_WRITE, FILE_SHARE_READ, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
FILETIME ctime,atime,wtime;//系统时间转换成文件时间
SYSTEMTIME sctime,satime,swtime;
//创建时间转换
sctime.wYear =m_createTime.GetYear (); //得到创建时间年
sctime.wMonth =m_createTime.GetMonth(); //得到创建时间月
sctime.wDay =m_createTime.GetDay (); //得到创建时间天
sctime.wHour =0;
sctime.wMinute=0;
sctime.wSecond =0;
sctime.wDayOfWeek=0;
sctime.wMilliseconds =0;
SystemTimeToFileTime(&sctime,&ctime);//时间转换
satime.wYear = m_accessTime.GetYear ();//访问时间转换
satime.wMonth = m_accessTime.GetMonth();
satime.wDay = m_accessTime.GetDay ();
satime.wHour =0;
satime.wMinute=0;
satime.wSecond =0;
satime.wDayOfWeek=0;
satime.wMilliseconds =0;
if(!SystemTimeToFileTime(&satime,&atime))MessageBox("ERROR");
swtime.wYear = m_modifyTime.GetYear ();//修改时间转换
swtime.wMonth = m_modifyTime.GetMonth();
swtime.wDay = m_modifyTime.GetDay ();
swtime.wHour =0;
swtime.wMinute=0;
swtime.wSecond =0;
swtime.wDayOfWeek=0;
swtime.wMilliseconds =0;
if(!SystemTimeToFileTime(&swtime,&wtime))MessageBox("ERROR");
if(SetFileTime(file,&ctime,&atime,&wtime))//设置时间修改
{
MessageBox("文件时间修改成功!");
}
CloseHandle(file);//关闭句柄
}
![MFC应用实例:[49]获取修改文件创建时间](https://exp-picture.cdn.bcebos.com/46a92de039723d03784bc235bb486143d6d45735.jpg)
5、程序运行如下:
![MFC应用实例:[49]获取修改文件创建时间](https://exp-picture.cdn.bcebos.com/6002c9d4483104eb3c06a3bc092b74ee1d324e35.jpg)
![MFC应用实例:[49]获取修改文件创建时间](https://exp-picture.cdn.bcebos.com/836a6aee1c324b18818d704253a7263349844835.jpg)
![MFC应用实例:[49]获取修改文件创建时间](https://exp-picture.cdn.bcebos.com/49c5d3e34b2c56eea3de7abdf775e5f4fdf54035.jpg)