SetFileTime() 函数用来设置指定文件的创建时间,最后一次访问时间,以及最后的修改时间。函数原型声明如下:
[Plain Text] 纯文本查看 复制代码 BOOL WINAPI SetFileTime(
__in HANDLE hFile,
__in_opt const FILETIME *lpCreationTime,
__in_opt const FILETIME *lpLastAccessTime,
__in_opt const FILETIME *lpLastWriteTime
);
第 1 个参数表示要设置文件的句柄,第 2 ,第3,和 第4 个参数实际上都为同一个变量,它们都是 FILETIME 结构类型指针。如果要设定某个时间,就相应填写该参数,如果不设定,则填为 NULL 。
示例代码:
[C++] 纯文本查看 复制代码
// setFileTime.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
DWORD Options (int argc, LPTSTR argv [], LPCTSTR OptStr, ...)
{
va_list pFlagList;
LPBOOL pFlag;
int iFlag = 0, iArg;
va_start (pFlagList, OptStr);
while ((pFlag = va_arg (pFlagList, LPBOOL)) != NULL && iFlag < (int)_tcslen (OptStr))
{
*pFlag = FALSE;
for (iArg = 1; !(*pFlag) && iArg < argc && argv [iArg] [0] == _T('-'); iArg++)
*pFlag = wmemchr (argv [iArg], OptStr [iFlag], _tcslen (argv [iArg])) != NULL;
iFlag++;
}
va_end (pFlagList);
for (iArg = 1; iArg < argc && argv [iArg] [0] == _T('-'); iArg++);
return iArg;
}
int _tmain(int argc, LPTSTR argv[])
{
FILETIME newFileTime;
LPFILETIME pAccessTime = NULL, pModifyTime = NULL;
HANDLE hFile;
BOOL setAccessTime, setModTime, NotCreateNew, maFlag;
DWORD createFlag;
int i, fileIndex;
fileIndex = Options (argc, argv, _T("amc"), &setAccessTime, &setModTime, &NotCreateNew, NULL);
maFlag = setAccessTime || setModTime;
createFlag = NotCreateNew ? OPEN_EXISTING : OPEN_ALWAYS;
for (i = fileIndex; i < argc; i++) {
hFile = CreateFile (argv[i], GENERIC_READ | GENERIC_WRITE, 0, NULL, createFlag, FILE_ATTRIBUTE_NORMAL, NULL);
GetSystemTimeAsFileTime(&newFileTime); /* 获取系统时间并转换为文件时间 */
if (setAccessTime || !maFlag)
pAccessTime = &newFileTime;
if (setModTime || !maFlag)
pModifyTime = &newFileTime;
SetFileTime(hFile, (LPFILETIME)NULL, pAccessTime, pModifyTime); /* 设置文件时间 */
}
return 0;
}
关于 Options() 函数的分析可参考:http://www.groad.net/bbs/read.php?tid-4668.html |