C++

古い_dos_getftime()関数は、DOS時代のファイルの最終更新日時を取得する関数でしたが、Windowsでその代替となる関数は標準的なC++Windows APIには存在しません。代わりに、Windowsでファイルの属性を取得するには、Windows APIGetFileAttributes() 関数や 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構造体に変換して表示しています。