如何得到已创建的文件的时间! 各位达人,我在基于SDI的程序的VIEW中输入了一些文字内容,并作为文件保存下来!现在想按时间查找这些文件!用CFILEFIND可以实现按文件名查找,现在我用DATE TIME PICKER控件指定一个时间段,想将这个时间段中的文件查找出来,该怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 GetFileInformationByHandle里面可以得到文件建立的时间 CFile file;CFileStatus status;file.GetStatus("c:\\test.txt",status);CTime ct=status.m_ctime;CString text;text.Format("创建时间:%d-%02d-%02d %02d:%02d:%02d",ct.GetYear(),ct.GetMonth(),ct.GetDay(),ct.GetHour(),ct.GetMinute(),ct.GetSecond());AfxMessageBox(text); // hFile 文件句柄// lpszString - 指向接受时间的字符串指针BOOL GetCreationTime(HANDLE hFile, LPCSTR lpszString){ FILETIME ftCreate, ftAccess, ftWrite; SYSTEMTIME stUTC, stLocal; // Retrieve the file times for the file. if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite)) return FALSE; // Convert the last-write time to local time. FileTimeToSystemTime(&ftCreate, &stUTC); SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal); // Build a string showing the date and time. wsprintf(lpszString, "%02d/%02d/%d %02d:%02d", stLocal.wDay, stLocal.wMonth, stLocal.wYear, stLocal.wHour, stLocal.wMinute); return TRUE;} 要把LPCSTR lpszString改为LPTSTR lpszString 我想将C盘下符合查询条件时间的文件列出来,建立了一个Dialog,在上面放置了两个Date Time Picker还有一个ListBox,我写了如下代码:void CTimeDlg::OnOK() { // TODO: Add extra validation here UpdateData(); WIN32_FIND_DATA fd; m_list.ResetContent(); CString m_file = "c:\\*.*"; HANDLE hd = ::FindFirstFile((LPCTSTR)m_file,&fd); CFile file; CFileStatus status; CString str = "c:\\"; str += fd.cFileName; file.GetStatus(str,status); if (status.m_ctime > m_Begintime && status.m_ctime < m_Endtime) { m_list.AddString(fd.cFileName); } while (FindNextFile(hd,&fd)) { if (status.m_ctime > m_Begintime && status.m_ctime < m_Endtime) { m_list.AddString(fd.cFileName); }这样能编译通过,可是执行的效果却不对,请各位大侠指点一下迷津! } 下面的程序应该可以,m_Begintime和m_Endtime是和Date Time Picker控件的变量,是CTime类型的 UpdateData(); m_list.ResetContent(); WIN32_FIND_DATA FileData; HANDLE hSearch; TCHAR szFile2Find[]=_T("C:\\*.*"); DWORD dwAttrs=0; hSearch=::FindFirstFile(szFile2Find, &FileData); if (hSearch == INVALID_HANDLE_VALUE) { AfxMessageBox(_T("找不到文件。")); return; } dwAttrs=::GetFileAttributes(FileData.cFileName); if(!(FileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)) { CTime tCreation(FileData.ftCreationTime); if(tCreation>m_Begintime&&tCreation<m_Endtime) m_list.AddString(FileData.cFileName); } while(1) { if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { AfxMessageBox(_T("没有文件了") ); break; } } if(FileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) continue; CTime tCreation(FileData.ftCreationTime); if(tCreation>m_Begintime&&tCreation<m_Endtime) m_list.AddString(FileData.cFileName); } 你使用函数GetFileTime就可以得到你的文件的一系列的时间了。 谢谢AkiraChing和wangjinwang,同时也谢谢zbc和DeautyFan的关注,问题解决了! 程序(我想枚举的主窗口)最小化后,枚举得到的子窗口大小不正确 关于TCP方式登陆服务器 请问如何修改分割视图的拖动时的光标? 很多公司在招聘中为什么对语言的掌握要求很宽泛? 在VC中如何继承一个控件 请问怎样可以实现远程管理meida 服务器呢? 各位同仁志士快帮帮我!!急急如律令 转让一批编程参考书(深圳罗湖) 有关vc++的operator=()的问题? opencv 如何识别并标注一个锥形的角度 一个关于com的问题!我都快急疯了! 用vc开发dll时遇到的对话框问题,求助!
CFileStatus status;
file.GetStatus("c:\\test.txt",status);
CTime ct=status.m_ctime;
CString text;
text.Format("创建时间:%d-%02d-%02d %02d:%02d:%02d",ct.GetYear(),ct.GetMonth(),ct.GetDay(),ct.GetHour(),ct.GetMinute(),ct.GetSecond());
AfxMessageBox(text);
// lpszString - 指向接受时间的字符串指针BOOL GetCreationTime(HANDLE hFile, LPCSTR lpszString)
{
FILETIME ftCreate, ftAccess, ftWrite;
SYSTEMTIME stUTC, stLocal; // Retrieve the file times for the file.
if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
return FALSE; // Convert the last-write time to local time.
FileTimeToSystemTime(&ftCreate, &stUTC);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal); // Build a string showing the date and time.
wsprintf(lpszString, "%02d/%02d/%d %02d:%02d",
stLocal.wDay, stLocal.wMonth, stLocal.wYear,
stLocal.wHour, stLocal.wMinute); return TRUE;
}
void CTimeDlg::OnOK()
{ // TODO: Add extra validation here
UpdateData();
WIN32_FIND_DATA fd;
m_list.ResetContent();
CString m_file = "c:\\*.*";
HANDLE hd = ::FindFirstFile((LPCTSTR)m_file,&fd);
CFile file;
CFileStatus status;
CString str = "c:\\";
str += fd.cFileName;
file.GetStatus(str,status);
if (status.m_ctime > m_Begintime && status.m_ctime < m_Endtime)
{
m_list.AddString(fd.cFileName);
}
while (FindNextFile(hd,&fd))
{
if (status.m_ctime > m_Begintime && status.m_ctime < m_Endtime)
{
m_list.AddString(fd.cFileName);
}
这样能编译通过,可是执行的效果却不对,请各位大侠指点一下迷津!
}
WIN32_FIND_DATA FileData;
HANDLE hSearch;
TCHAR szFile2Find[]=_T("C:\\*.*");
DWORD dwAttrs=0; hSearch=::FindFirstFile(szFile2Find, &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("找不到文件。"));
return;
} dwAttrs=::GetFileAttributes(FileData.cFileName);
if(!(FileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
{
CTime tCreation(FileData.ftCreationTime);
if(tCreation>m_Begintime&&tCreation<m_Endtime)
m_list.AddString(FileData.cFileName);
} while(1)
{
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
AfxMessageBox(_T("没有文件了") );
break;
}
} if(FileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
continue; CTime tCreation(FileData.ftCreationTime);
if(tCreation>m_Begintime&&tCreation<m_Endtime)
m_list.AddString(FileData.cFileName);
}