C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[939] 파일의 생성, 수정, 마지막 액세스 시간 얻는 함수 2
크레브 [kkol] 13196 읽음    2009-12-09 03:03
바로 아래 글에서 조사한 함수를 바탕으로
파일의 생성 시간, 마지막 수정 시간, 마지막 액세스 시간을 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;
}

박지훈.임프 [cbuilder]   2009-12-09 03:58 X
FileDateToDateTime 함수 말씀이신 듯...
이름 그대로 파일 날짜를 TDateTime으로 변환해줍니다.
SysUtils에 있습니다.
박지훈.임프 [cbuilder]   2009-12-09 04:08 X
또 FileAge라는 함수도 있는데요. 파일 경로를 인자로 넘겨주면 int 타입의 파일 수정 날짜를 리턴합니다.

결과적으로, FileDateToDateTime(FileAge('c:\어쩌구파일.txt')) 요렇게 하면 해당 파일의 수정 날짜를 한방에 알 수 있습니다. FileAge로는 수정 날짜만 알 수 있어서 생성 날짜와 액세스 날짜 등은 알 수 없지만, 아무래도 수정 날짜가 가장 많이 쓰이니까요.
크레브 [kkol]   2009-12-09 12:24 X
네 수정 날짜는 FileAge로 알 수 있습니다.
나머지 날짜는 가져오는 VCL 함수는 없는듯하네요 ^^

+ -

관련 글 리스트
939 파일의 생성, 수정, 마지막 액세스 시간 얻는 함수 2 크레브 13196 2009/12/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.