ファイルからいくつかの情報をキャッシュしています。ファイルの内容が変更されているかどうか定期的にチェックして、必要に応じて新しいコンテンツ。C++ファイルの最終更新時刻を確認する方法
これは、C++でファイルの最終変更時刻を取得する方法があるのだろうかと私は思っています。
ファイルからいくつかの情報をキャッシュしています。ファイルの内容が変更されているかどうか定期的にチェックして、必要に応じて新しいコンテンツ。C++ファイルの最終更新時刻を確認する方法
これは、C++でファイルの最終変更時刻を取得する方法があるのだろうかと私は思っています。
言語固有の方法はありませんが、OSは必要な機能を提供します。
UNIXシステムを使用している場合は、stat
コールが必要です。 Visual Studioのウィンドウには、同等の_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のチュートリアルのリンクです。
Boostには、あらゆる種類のファイル名で機能するという利点があります。したがって、非ASCIIファイル名が処理されます。
古いCの 'stat'呼び出しに何が問題なのですか? –
@ Jean-FrançoisFabre、それはUNIXシステムコールですので、クロスプラットフォームではありません – SingerOfTheFall
@SingerOfTheFallだから私は答えませんでした。 –