2013-06-19 2 views
0
HANDLE f = CreateFile(filepath,GENERIC_ALL,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 
      FILETIME create, access, write; 

      GetFileTime(f,&create,&access,&write); 
      std::cout << "debug " << std::endl; 
      SYSTEMTIME s; 
      FileTimeToSystemTime(&create,&s); 
      displayTime(s); 

이 코드에서는 파일을 만들고 해당 파일의 생성/마지막 액세스/마지막으로 수정 한 시간을 표시하려고합니다. 그래서 나는 FILETIME을 얻었고 그것을 SYSTEMTIME으로 변환하고 그것을 디스플레이합니다.getFileTime은 항상 01/01/1601을 반환합니다.

문제는 레퍼토리의 모든 파일의 날짜가 같은지 01/01/1601입니다. 파일 시스템에서 "타임 스탬프"는 01/01/1601에서 계산되었지만 오늘 테스트를 위해 만든 파일이이 날짜의 파일인지 이해할 수 없습니다.

+0

오류 검사의 전체 부족이 잘못되면, 보장을 참조하십시오. ** 특히 winapi 함수의 반환 값을 무시하지 마십시오. 특히 자주 실패하는 함수의 경우. 파일 시스템과 관련된 모든 것. –

답변

2

매개 변수 OPEN_EXISTING은 기존 파일 만 열린다는 것을 의미합니다. 파일을 만들지 않으므로 수정 된 시간이 unitialised 된 이유가 설명됩니다.

대신 CREATE_ALWAYS 등을 사용하십시오.

는 이유를 알고 결코, http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx

+0

프로그램 시작 전에 내 파일이 만들어 졌으므로 OPEN_EXISTING을 사용해야합니다. 고맙습니다 – user2385830