MFC应用实例:[49]获取修改文件创建时间
1、新建一个基于对话框的应用程序,工程名为FileTime。
2、如下图为对话框添加二个按钮,一个编辑框,四个静态文本和三个日历控件。
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); } } }
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);//关闭句柄}
5、程序运行如下: