void FileInfomation(char *pszFileName)
{
HANDLE hFile;
char szFileTime[100];
LARGE_INTEGER liFileSize;
SYSTEMTIME st;
FILETIME localTime;
WIN32_FIND_DATA FileInformation;
hFile = FindFirstFile(pszFileName, &FileInformation);
memset(szFileTime,0x00, sizeof(szFileTime));
//파일 마지막 엑세스날짜
if(FileTimeToLocalFileTime( &FileInformation.ftLastAccessTime, &localTime ))
{
FileTimeToSystemTime(&localTime, &st );
sprintf(szFileTime,"%04d-%02d-%02d %02d:%02d:%02d::%02d", st.wYear, st.wMonth, st.wDay, st.wHour , st.wMinute, st.wSecond, st.wMilliseconds );
printf("AcessTime : %s\n", szFileTime);
}
memset(szFileTime,0x00, sizeof(szFileTime));
// 파일 만든날짜
if(FileTimeToLocalFileTime( &FileInformation.ftCreationTime, &localTime ))
{
FileTimeToSystemTime(&localTime, &st );
sprintf(szFileTime,"%04d-%02d-%02d %02d:%02d:%02d::%02d", st.wYear, st.wMonth, st.wDay, st.wHour , st.wMinute, st.wSecond, st.wMilliseconds );
printf("Create Time : %s\n", szFileTime);
}
//liFileSize : 파일 사이즈
liFileSize.LowPart = FileInformation.nFileSizeLow;
liFileSize.HighPart = FileInformation.nFileSizeHigh;
printf("file Size : %I64d\n", liFileSize);
}
참고
WIN32_FIND_DATA 구조체
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
FILETIME 구조체
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME;
FindFirstFile 를 통해서 얻는 화일의 시간정보는
시간이 Universal Time이라서 우리가 윈도우에서 보는 시간과 다르다.
따라서 FileTimeToLocalFileTime 와 FileTimeToSystemTime 를 써야 정확한 눈에 보이는 시간을 얻을수 있다.
'C & C++ > C & C++' 카테고리의 다른 글
[이벤트] WM_NCHITTEST 메시지로 캡션(타이틀바)가 없는 윈도우의 드래그하기 (0) | 2011.04.14 |
---|---|
#pragma ? (0) | 2011.04.14 |
[Message] Getmessage, Translatemessage, DispatchMessage, PeekMessage (0) | 2011.04.14 |
[스레드] MFC에서 스레드(Thread) 사용하기 (0) | 2011.04.14 |
CString Split 문자열 잘라내기 (0) | 2011.04.14 |
댓글