2016-11-09 3 views
1

파일의 일부 정보를 캐싱 중이며 주기적으로 파일의 내용이 수정되었는지 확인하여 파일을 다시 읽을 수 있도록하고 싶습니다. 필요한 경우 새 콘텐츠.C++ 파일의 마지막 수정 시간을 확인하는 방법

그래서 C++에서 파일의 마지막 수정 시간을 얻는 방법이 있는지 궁금합니다.

+0

좋은 오래된 C'stat' 호출에는 어떤 문제가 있습니까? –

+0

@ Jean-FrançoisFabre, 유닉스 시스템 호출이기 때문에 플랫폼간에 교차하지 않습니다 – SingerOfTheFall

+0

@SingerOfTheFall 그래서 제가 대답하지 않았습니다. –

답변

11

언어 별 방법은 없지만 OS는 필요한 기능을 제공합니다.

유닉스 시스템을 사용하는 경우 stat 호출이 필요합니다. Visual Studio에서 Windows 용으로 제공되는 동일한 _stat 호출이 있습니다.

#include <sys/types.h> 
    #include <sys/stat.h> 
    #ifndef WIN32 
    #include <unistd.h> 
    #endif 

    #ifdef WIN32 
    #define stat _stat 
    #endif 

    auto filename = "/path/to/file"; 
    struct stat result; 
    if(stat(filename.c_str(), &result)==0) 
    { 
     auto mod_time = result.st_mtim; 
     ... 
    } 
+0

그래서 UNIX와 Windows 모두에서 사용할 수있는 것은 없습니까? :/ –

+0

Windows 지원을 추가하도록 수정 됨 – Smeeheey

3

당신은 부스트의 last_write_time 그것에 대해 사용할 수 있습니다 : 그래서 여기 모두를 위해 일하는 것이 코드입니다. 부스트는 크로스 플랫폼입니다.

Here 님의 튜토리얼 링크입니다.

부스트는 모든 종류의 파일 이름에서 작동한다는 장점이있어서 비 ASCII 파일 이름을 처리합니다.