CreateFile()
GetFileTime();
SetFileTime();
BOOL _GetFileTime(char *sFileName,FILETIME &ftCreationTime, FILETIME& ftLastAccessTime, FILETIME& ftLastWriteTime)
{
BOOL bResult = false;
HANDLE hFile = CreateFileA(sFileName, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile != NULL)
{
bResult = GetFileTime(hFile, &ftCreationTime, &ftLastAccessTime, &ftLastWriteTime);
}
CloseHandle(hFile);
return bResult;
}
BOOL _SetFileTime(char* sFileName, FILETIME& ftCreationTime, FILETIME& ftLastAccessTime, FILETIME& ftLastWriteTime)
{
BOOL bResult = false;
HANDLE hFile = CreateFileA(sFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != NULL)
{
bResult = SetFileTime(hFile, &ftCreationTime, &ftLastAccessTime, &ftLastWriteTime);
}
CloseHandle(hFile);
return bResult;
}
void Test3()
{
char sFileSrc[255] = {"C:\\Users\\Administrator\\1.txt"};
char sFileOrg[255] = { "I:\\xxx\\2.txt" };
FILETIME ftCreationTime, ftLastAccessTime, ftLastWriteTime;
memset(&ftLastWriteTime, 0, sizeof(FILETIME));
memset(&ftLastAccessTime, 0, sizeof(FILETIME));
memset(&ftLastWriteTime, 0, sizeof(FILETIME));
_GetFileTime(sFileSrc, ftCreationTime, ftLastAccessTime, ftLastWriteTime);
_SetFileTime(sFileOrg, ftCreationTime, ftLastAccessTime, ftLastWriteTime);
}
#include <windows.h>
#include <stdio.h>
//----------- Error Handling Function -------------------
void error(LPSTR lpszFunction)
{
CHAR szBuf[80];
DWORD dw = GetLastError();
sprintf(szBuf, "%s failed: GetLastError returned %u\n",
lpszFunction, dw);
MessageBox(NULL, szBuf, "Error", MB_OK);
ExitProcess(dw);
}
//--------------------------------------------------------
BOOL GetFileTime(HANDLE hFile, LPSTR lpszCreationTime, LPSTR lpszLastAccessTime, LPSTR lpszLastWriteTime)
{
FILETIME ftCreate, ftAccess, ftWrite;
SYSTEMTIME stUTC1, stLocal1, stUTC2, stLocal2, stUTC3, stLocal3;
// -------->获取 FileTime
if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite)){
error("GetFileTime()");
return FALSE;
}
//---------> 转换: FileTime --> LocalTime
FileTimeToSystemTime(&ftCreate, &stUTC1);
FileTimeToSystemTime(&ftAccess, &stUTC2);
FileTimeToSystemTime(&ftWrite, &stUTC3);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC1, &stLocal1);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC2, &stLocal2);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC3, &stLocal3);
// ---------> Show the date and time.
wsprintf(lpszCreationTime, "创建时间:\t%02d/%02d/%d %02d:%02d",
stLocal1.wDay, stLocal1.wMonth, stLocal1.wYear,
stLocal1.wHour, stLocal1.wMinute);
wsprintf(lpszLastAccessTime, "最后访问时间:\t%02d/%02d/%d %02d:%02d",
stLocal2.wDay, stLocal2.wMonth, stLocal2.wYear,
stLocal2.wHour, stLocal2.wMinute);
wsprintf(lpszLastWriteTime, "最后修改时间:\t%02d/%02d/%d %02d:%02d",
stLocal3.wDay, stLocal3.wMonth, stLocal3.wYear,
stLocal3.wHour, stLocal3.wMinute);
return TRUE;
}
//----------------------------------------------------------------
int main(int argn, char* argv[])
{
if (argn < 2)
{
return -1;
}
HANDLE hFile;
TCHAR szCreationTime[30], szLastAccessTime[30], szLastWriteTime[30];
hFile = CreateFile(argv[1], 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
GetFileTime(hFile, szCreationTime, szLastAccessTime, szLastWriteTime);
if (hFile == INVALID_HANDLE_VALUE){
error("GetLastWriteTime()");
return 0;
}
printf("%s\n%s\n%s\n", szCreationTime, szLastAccessTime, szLastWriteTime);
CloseHandle(hFile);
system("pause");
return 0;
}