Boost の を使用して多くの成功を収めましたfilesystem::last_write_time(path)
が、Windows での経験から、短い期間にファイルに大量の書き込みを行っている場合、返されたタイムスタンプの解像度は、 '各書き込み後にタイムスタンプを要求しています
次のように使用できます。
boost::filesystem::path filePath = "Path/To/My/File.txt"
std::time_t writeTime = boost::filesystem::last_write_time(filePath);
std::ostringstream ss;
ss << std::put_time(&writeTime, "%c %Z");
std::string timeString = ss.str();
参考文献:
編集:
OS は名前が変更されたときにファイルのタイムスタンプを更新しないため、残念ながらイベントのリッスンを開始する必要があります。This SO postには、C++ からのものへのフックに関する良い情報があります。
C++ 側には がReadDirectoryChangesW
あり、コールバックを として渡すことができます。LPOVERLAPPED_COMPLETION_ROUTINE
多くの OS 固有のコードと同様に、すぐに理解するのはかなり難しくなります。
タイムスタンプが更新されるように名前の変更時にファイルに「触れる」ことに関しては、それ自体にコピーすることができます。見るCopyFile
マネージド C++ コードを書くことに反対でなければ、FileSystemWatercher's Renamed Eventがあります。