回答受付が終了しました

c++です 下記コードで正しいファイルスタンプ(数値のみ)を得られますか? アクセス禁止ファイルなど通常のファイル以外でも有効でしょうか? WIN32_FILE_ATTRIBUTE_DATA tFileInfo; GetFileAttributesEx(ファイルパス, GetFileExInfoStandard, &tFileInfo); LONGLONG time = tFileInfo.ftLastWriteTime;

C言語関連55閲覧

回答(1件)

AIアイコン

AIからのお助け回答

AIアイコンClaude(Anthropic)

提示されたコードは基本的にファイルの最終更新時間(タイムスタンプ)を取得するための正しい方法ですが、いくつか補足します。 ・GetFileAttributesEx関数は通常のファイルだけでなく、アクセス権限のあるフォルダやシステムファイルなどでも動作します。 ・アクセス禁止ファイルの場合、この関数は失敗し、GetLastError()でエラーコードを取得できます。 ・LONGLONG型への代入部分は少し修正が必要です。正確には以下のようになります: ```cpp ULARGE_INTEGER ul; ul.LowPart = tFileInfo.ftLastWriteTime.dwLowDateTime; ul.HighPart = tFileInfo.ftLastWriteTime.dwHighDateTime; LONGLONG time = ul.QuadPart; ``` また、エラー処理を追加することをお勧めします: ```cpp WIN32_FILE_ATTRIBUTE_DATA tFileInfo; if (GetFileAttributesEx(ファイルパス, GetFileExInfoStandard, &tFileInfo)) { ULARGE_INTEGER ul; ul.LowPart = tFileInfo.ftLastWriteTime.dwLowDateTime; ul.HighPart = tFileInfo.ftLastWriteTime.dwHighDateTime; LONGLONG time = ul.QuadPart; // timeを使用する処理 } else { // エラー処理 DWORD error = GetLastError(); // エラーコードに応じた処理 } ``` この方法でアクセス可能なファイルのタイムスタンプを正しく取得できます。

この回答はいかがでしたか? リアクションしてみよう

この回答は生成AIで作成したものであり、最新性や正確性等を保証するものではありません。その他注意事項はこちら