获取文件创建时间、最后修改时间、访问时间

//获取文件属性创建时间、访问时间 和 修改时间
//这里的CreateFile只导致文件只能被只读打开,不能有其他权限,最好用FindFile获取创建,修改和访问时间
void get_file_create_modify_access_time()
{
	std_string str_create_time, str_access_time, str_modify_time;
	FILETIME ftCreate, ftAccess, ftModify;
	std::string strFilePath;
	strFilePath.assign("C://1.txt");
	HANDLE hFile = CreateFileA(strFilePath.c_str(), 
		GENERIC_READ, 
		FILE_SHARE_READ, 
		NULL,
		OPEN_EXISTING, 
		FILE_FLAG_BACKUP_SEMANTICS, 
		NULL);

	if (GetFileTime(hFile, &ftCreate, &ftAccess , &ftModify))
	{
		SYSTEMTIME stLocal;
		ZeroMemory(&stLocal, sizeof(SYSTEMTIME));
		FileTimeToSystemTime(&ftCreate, &stLocal);
		//备注:FileTimeToSystemTime获取的系统时间小时数比实际小8个小时,所以加上即可
		str_create_time.AppendFormat("%04d-%02d-%02d %02d:%02d:%02d", stLocal.wYear, stLocal.wMonth, 
			stLocal.wDay,  stLocal.wHour + 8, stLocal.wMinute, stLocal.wSecond);   // 文件创建时间
		ZeroMemory(&stLocal, sizeof(SYSTEMTIME));
		FileTimeToSystemTime(&ftModify, &stLocal);
		str_modify_time.AppendFormat("%04d-%02d-%02d %02d:%02d:%02d", stLocal.wYear, stLocal.wMonth, 
			stLocal.wDay,  stLocal.wHour + 8, stLocal.wMinute, stLocal.wSecond); //  文件修改时间
		ZeroMemory(&stLocal, sizeof(SYSTEMTIME));
		FileTimeToSystemTime(&ftAccess, &stLocal);
		str_access_time.AppendFormat("%04d-%02d-%02d %02d:%02d:%02d", stLocal.wYear, stLocal.wMonth, 
			stLocal.wDay,  stLocal.wHour + 8, stLocal.wMinute, stLocal.wSecond); // 文件访问时间
		return;	
	}	
}

你可能感兴趣的:(C++)