2个回答
展开全部
给你看段纯C+SDK代码吧,是创建时间 你把代码看明白 自己稍微改下就是修改时间了
先去吧这个结构体类型整明白WIN32_FILE_ATTRIBUTE_DATA
把GetFileAttributesEx这个API弄明白
case WM_COMMAND:
if(lParam == (LPARAM)hBtn)
{
GetWindowText(hEdit, buf, 1000);
if(!strlen(buf))
{
MessageBox(hwnd, TEXT("文本框为空!"), TEXT("错误"), MB_OK);
}
else
{
WIN32_FILE_ATTRIBUTE_DATA file_attr;
FILETIME LocalFileTime;
SYSTEMTIME SysTime;
GetFileAttributesEx(buf, GetFileExInfoStandard, (LPVOID)(&file_attr));
FileTimeToLocalFileTime(&file_attr.ftCreationTime, &LocalFileTime);//时间转换msdn上拿来主义copy来的
FileTimeToSystemTime(&LocalFileTime, &SysTime);
sprintf(buf, "Time Generated: %02d-%02d-%02d %02d:%02d:%02d\n",
SysTime.wYear, SysTime.wMonth, SysTime.wDay,
SysTime.wHour, SysTime.wMinute, SysTime.wSecond);
MessageBox(hwnd, buf, TEXT("文件创建时间为"), MB_OK);
}
}
return 0;
追问
谢谢
展开全部
这里只举了修改时间的例子,其他两个自己替换成相应的FILETIME
void test()
{
FILETIME CreateTime;// 文件创建的时间
FILETIME VisitTime;//文件访问时间
FILETIME ModifyTime;// 文件修改时间
FILETIME LocalTime;//本地时间
BOOL bGotFileCreateTime;
HANDLE hOriginal = CreateFile( _T("c:\\1.exe"), GENERIC_READ ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );
if( INVALID_HANDLE_VALUE == hOriginal )
{
printf("打开文件失败\n");
}
else
{
bGotFileCreateTime = GetFileTime( hOriginal, &CreateTime, &VisitTime, &ModifyTime );
SYSTEMTIME tModify;
FileTimeToLocalFileTime(&ModifyTime,&LocalTime);//刚获取到的时间是0时区的标准时间,先转换到本地时间
FileTimeToSystemTime(&LocalTime,&tModify);//转换为SYSTEMTIME
printf("%d-%d-%d %d:%d:%d:%d\n",tModify.wYear,tModify.wMonth,tModify.wDay,tModify.wHour,tModify.wMinute,tModify.wSecond,tModify.wMilliseconds);
}
}
void test()
{
FILETIME CreateTime;// 文件创建的时间
FILETIME VisitTime;//文件访问时间
FILETIME ModifyTime;// 文件修改时间
FILETIME LocalTime;//本地时间
BOOL bGotFileCreateTime;
HANDLE hOriginal = CreateFile( _T("c:\\1.exe"), GENERIC_READ ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );
if( INVALID_HANDLE_VALUE == hOriginal )
{
printf("打开文件失败\n");
}
else
{
bGotFileCreateTime = GetFileTime( hOriginal, &CreateTime, &VisitTime, &ModifyTime );
SYSTEMTIME tModify;
FileTimeToLocalFileTime(&ModifyTime,&LocalTime);//刚获取到的时间是0时区的标准时间,先转换到本地时间
FileTimeToSystemTime(&LocalTime,&tModify);//转换为SYSTEMTIME
printf("%d-%d-%d %d:%d:%d:%d\n",tModify.wYear,tModify.wMonth,tModify.wDay,tModify.wHour,tModify.wMinute,tModify.wSecond,tModify.wMilliseconds);
}
}
追问
这个文件c:\\1.exe 预先硬盘上面就有了。我只需要读取他的修改时间。。如果弄?
追答
建一个控制台项目,把我的代码考进去,在main中添加test();运行就可以看到结果,是修改时间。别忘了加#include
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询