现有一段代码,它会自动检测c:\\test.dat是否存在,如果存在就删除掉它。
WIN32_FIND_DATA wfd;
if (INVALID_HANDLE_VALUE != FindFirstFileW(L"c:\\test.dat", &wfd))
{
DeleteFile(L"c:\\test.dat");}
}现在需要将它修改一下,获取c:\\test.dat的创建时间(文件的修改时间也可以),如果创建时间(与现在的系统时间相比)大于30秒则删除它。请问如何在本例中利用FILETIME ftCreationTime,并与系统时间比较并删除。
WIN32_FIND_DATA wfd;
if (INVALID_HANDLE_VALUE != FindFirstFileW(L"c:\\test.dat", &wfd))
{
DeleteFile(L"c:\\test.dat");}
}现在需要将它修改一下,获取c:\\test.dat的创建时间(文件的修改时间也可以),如果创建时间(与现在的系统时间相比)大于30秒则删除它。请问如何在本例中利用FILETIME ftCreationTime,并与系统时间比较并删除。
解决方案 »
- 关于CXIMAGE的问题
- 易发港式五张看牌器 发布
- 怎么实现打印CFromView派生的一部分区域,或者怎么打印出整个CFromView,有没有简单的方法
- 向高手求救:可以使用libmySQL.dll来建立一个MYSQL数据库吗?(
- 请问IIS中支持的最大并发ASP对象的个数是多少?有没有办法可以设置?
- 求助:在下对线程的理解对不对?
- 加急问题,在线等待。。。。。
- 请教在QQ中有否这样的软件?
- 谁能提供一个DBGrid控见使用的例子,my e_mail:lixia_zhang@hotmail谢谢!!
- 在某一对话框的某一事件中弹出另一对话框,用doModule不行,怎么做?
- 关于备份还原数据库的问题
- 有关位图按钮的立体感问题
FILETIME ft1, ft2;if ((ULONGLONG&)ft1 > (ULONGLONG&)ft2+30*10000000)
{
}
COleDateTime tm;
CSpanTime time;
if (INVALID_HANDLE_VALUE != FindFirstFileW(L"c:\\test.dat", &wfd))
{
tm = COleDateTime::GetCurrentTime(); //获取系统时间
SystemTimeToFileTime() //将系统时间转换为文件时间,几天语法请查msdn
time = tm - wfd.ftCreationTime;
if(time > 30*10000000)
DeleteFile(L"c:\\test.dat");}
}
WIN32_FIND_DATA wfd;
HANDLE find = FindFirstFileW(L"c:\\test.dat", &wfd);
if (INVALID_HANDLE_VALUE != find)
{
SYSTEMTIME st;
FILETIME ft;
GetSystemTime(&st);
SystemTimeToFileTime(&st, &ft);
if ((ULONGLONG&)ft > (ULONGLONG&)wfd.ftCreationTime+30*10000000)
{
DeleteFile(L"c:\\test.dat");
}
FindClose(find);
}
WIN32_FIND_DATA wfd;
if (INVALID_HANDLE_VALUE != FindFirstFileW(L"c:\\test.dat", &wfd))
{
SYSTEMTIME st;
FILETIME ft;
GetSystemTime(&st);
SystemTimeToFileTime(&st, &ft);
ULARGE_INTEGER u1,u2;
u1.LowPart= wfd.ftCreationTime.dwLowDateTime;
u1.HighPart =wfd.ftCreationTime.dwHighDateTime; u2.LowPart= ft.dwLowDateTime;
u2.HighPart =ft.dwHighDateTime; if((u2-u1)/10000>30)
DeleteFile(L"c:\\test.dat");}
}
改为if((u2-u1)/10000000>30)
if((u2-u1)/10000>30)
DeleteFile(L"c:\\test.dat");}
DeleteFile前面少了一个{对吗,但是在我的程序里还报错error C2676: binary '-' : 'union _ULARGE_INTEGER' does not define this operator or a conversion to a type acceptable to the predefined operatorcnzdgs大哥的代码非常好,但可惜就只头一次调用的时候比较准确,30秒才删除,但如果程序多次调用这个模块,就会直接DeleteFile(L"c:\\test.dat"); 非要退出程序,重新打开第一次执行模块代码就删除准确,后来的就即使创建时间不足30秒也删,感觉好象需要在哪里加代码把st和ft内容清空一下,不然会用之前的存的内容?奇怪~