바로 아래 글에서 조사한 함수를 바탕으로
파일의 생성 시간, 마지막 수정 시간, 마지막 액세스 시간을 TDateTime 형태로 얻어올 수 있는 함수를 하나 만들어보았습니다.
인터넷 뒤지면서 대충 갖다 붙였습니다.
아직 크게 쓸일은 없지만.. 나중에 필요할지도 모르겠습니다.
파일 시간 변환을 위해 꽤 여러가지 데이터 타입과 시간 변환 함수들이 필요하다는걸 처음 알게되었습니다.
간단한 VCL 함수가 없을까요?
이런거 꼭 찾아놓고 보면 나중에 VCL 함수 하나로 간단히 해결되는 경우가 있던데..
bool GetFileDate(String sFile, TDateTime &CreateDate, TDateTime &AccessDate, TDateTime &WriteDate)
{
HANDLE h_file = CreateFile(sFile.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(h_file == INVALID_HANDLE_VALUE)
return false;
FILETIME c , a, w;
if( GetFileTime(h_file, &c, &a, &w) == 0)
{
CloseHandle(h_file);
return false;
}
CloseHandle(h_file);
// filetime을 SystemTIme으로 변환
SYSTEMTIME sC, sA, sW;
FileTimeToSystemTime( &c , &sC );
FileTimeToSystemTime( &a , &sA );
FileTimeToSystemTime( &w , &sW );
// universal time을 로컬 시간으로 변환
SYSTEMTIME sLC, sLA, sLW;
SystemTimeToTzSpecificLocalTime(NULL , &sC, &sLC);
SystemTimeToTzSpecificLocalTime(NULL , &sA, &sLA);
SystemTimeToTzSpecificLocalTime(NULL , &sW, &sLW);
// system time을 DateTime으로 변환
CreateDate = SystemTimeToDateTime(sLC);
AccessDate = SystemTimeToDateTime(sLA);
WriteDate = SystemTimeToDateTime(sLW);
return true;
}
|