파일의 일부 정보를 캐싱 중이며 주기적으로 파일의 내용이 수정되었는지 확인하여 파일을 다시 읽을 수 있도록하고 싶습니다. 필요한 경우 새 콘텐츠.C++ 파일의 마지막 수정 시간을 확인하는 방법
그래서 C++에서 파일의 마지막 수정 시간을 얻는 방법이 있는지 궁금합니다.
파일의 일부 정보를 캐싱 중이며 주기적으로 파일의 내용이 수정되었는지 확인하여 파일을 다시 읽을 수 있도록하고 싶습니다. 필요한 경우 새 콘텐츠.C++ 파일의 마지막 수정 시간을 확인하는 방법
그래서 C++에서 파일의 마지막 수정 시간을 얻는 방법이 있는지 궁금합니다.
언어 별 방법은 없지만 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;
...
}
그래서 UNIX와 Windows 모두에서 사용할 수있는 것은 없습니까? :/ –
Windows 지원을 추가하도록 수정 됨 – Smeeheey
당신은 부스트의 last_write_time
그것에 대해 사용할 수 있습니다 : 그래서 여기 모두를 위해 일하는 것이 코드입니다. 부스트는 크로스 플랫폼입니다.
Here 님의 튜토리얼 링크입니다.
부스트는 모든 종류의 파일 이름에서 작동한다는 장점이있어서 비 ASCII 파일 이름을 처리합니다.
좋은 오래된 C'stat' 호출에는 어떤 문제가 있습니까? –
@ Jean-FrançoisFabre, 유닉스 시스템 호출이기 때문에 플랫폼간에 교차하지 않습니다 – SingerOfTheFall
@SingerOfTheFall 그래서 제가 대답하지 않았습니다. –