• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CreateFile関数を用いたファイル作成について)

CreateFile関数を用いたファイル作成について

このQ&Aのポイント
  • CreateFile関数を使用してファイルを作成する際に、リネーム処理後の作成日時が以前の作成日時になる問題が発生しています。
  • この問題の原因は、CreateFile関数がキャッシュファイルの情報を取得しているためです。
  • 解決方法としては、キャッシュファイルの情報をクリア(削除)することで、正しい作成日時でファイルを作成することができます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

新しく作成したファイルに、SetFileTime APIで現在の日時を設定してはどうですか? GetSystemTime APIでシステム時間を取得して、SystemTimeToFileTime APIでファイル時刻へ変換しSetFileTime APIでファイルの時刻を変更すれば更新できそうですが、試していないので結果はわかりません。 http://msdn.microsoft.com/library/ja/jpsysinf/html/_win32_getsystemtime.asp http://msdn.microsoft.com/library/ja/jpsysinf/html/_win32_systemtimetofiletime.asp http://msdn.microsoft.com/library/ja/jpsysinf/html/_win32_setfiletime.asp

ofjk_77
質問者

お礼

ご指摘の通り、下記APIにて作成日時を更新することができました。 SystemTimeToFileTime→ LocalFileTimeToFileTime→ SetFileTime 言われてみれば「なるほど~」という対処方法で なかなか気づきませんでした(汗) どうもありがとうございましたm(_ _)m

その他の回答 (2)

  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.2

いったん該当ファイルを削除して、それからもう一度作成したらよいと思いますよ。 DeleteFile()とか...

ofjk_77
質問者

お礼

MoveFile関数を、CopyFile&DeleteFile関数に変更しましたが、結果は同じでした。 (対処方法を勘違いしていましたらすみません) やはりキャッシュが悪さをしてるのでしょうかねぇ。

  • valvelde
  • ベストアンサー率35% (46/129)
回答No.1

新規にaaa.txtを作成せずに別の名前でファイルを作成した後、aaa.txtにリネームする。

ofjk_77
質問者

お礼

(引数は省略) (1)CopyFile(aaa.txt, aaa_0408.txt) ↓ (2)CreateFile(tmp.txt) ↓ (3)MoveFile(tmp.txt, aaa.txt) とすると、(3)にて作成日時が元に戻ってしまいました・・・ どうやらこちらの方法ではうまくいかないようです。

関連するQ&A