古い_dos_getftime()関数は、DOS時代のファイルの最終更新日時を取得する関数でしたが、Windowsでその代替となる関数は標準的なC++やWindows APIには存在しません。代わりに、Windowsでファイルの属性を取得するには、Windows APIの GetFileAttributes()
関数や GetFileTime()
関数を使用します。以下はその例です。
#include <iostream>
#include <windows.h>
int main() {
const char* filePath = "example.txt"; // ファイルのパスを設定
// ファイルの属性を取得
WIN32_FILE_ATTRIBUTE_DATA fileInfo;
if (!GetFileAttributesEx(filePath, GetFileExInfoStandard, &fileInfo)) {
std::cerr << "Failed to get file attributes." << std::endl;
return 1;
}
// ファイルの最終更新日時を取得
FILETIME lastWriteTime = fileInfo.ftLastWriteTime;
// FILETIMEをSYSTEMTIMEに変換
SYSTEMTIME systemTime;
if (!FileTimeToSystemTime(&lastWriteTime, &systemTime)) {
std::cerr << "Failed to convert file time to system time." << std::endl;
return 1;
}
// 最終更新日時を表示
std::cout << "Last modified time: ";
std::cout << systemTime.wYear << "-" << systemTime.wMonth << "-" << systemTime.wDay;
std::cout << " " << systemTime.wHour << ":" << systemTime.wMinute << ":" << systemTime.wSecond << std::endl;
return 0;
}
このコードでは、GetFileAttributesEx()
関数を使用してファイルの属性を取得し、ftLastWriteTime
メンバーから最終更新日時を取得します。そして、FileTimeToSystemTime()
関数を使用して、ファイルの最終更新日時をSYSTEMTIME構造体に変換して表示しています。