본문 바로가기
C & C++/C & C++

파일 정보(File information)

by izen8 2011. 4. 14.
반응형

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 를 써야 정확한 눈에 보이는 시간을 얻을수 있다.


반응형

댓글