VisualC++のCreateFile関数を用いて「作成日時が1週間前であれば
ファイルをリネームして保存後、以前のファイル名で
空ファイルを作成する」という処理を作っています。
(作成中の関数の抜粋)
/* リネーム処理 */
ret_code = MoveFile(logfile_path, rename_path);
if(ret_code == API_NG){ return(NG); }
/* 以前と同じ名前でファイルを新規作成 */
hfile = CreateFile(logfile_path,
GENERIC_WRITE,FILE_SHARE_WRITE,
NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
FILE_FLAG_NO_BUFFERING);
if( hfile == INVALID_HANDLE_VALUE ) { return(NG); }
CloseHandle(hfile);
}
return(OK);
}
リネームする以前と同じ名前でファイルを作成すると
ファイルの作成日時がリネームする以前の作成日時になってしまいます。
(例)
4月1日に「aaa.txt」を作成→
4月8日に「aaa_0401.txt」にリネーム後、新規に「aaa.txt」を作成すると
作成日時が「4月1日」になってしまう。
Microsoftのページによると、キャッシュファイルの情報を取得しているために
以前の作成日時にてファイルが作成されてしまうようです。
http://www.microsoft.com/JAPAN/developer/library …
原因は分かったのですが、対処方法が思い浮かびません。
上記問題を解決するにはどういった方法がありますでしょうか?
ご教授をよろしくお願いします。
No.3ベストアンサー
- 回答日時:
新しく作成したファイルに、SetFileTime APIで現在の日時を設定してはどうですか?
GetSystemTime APIでシステム時間を取得して、SystemTimeToFileTime APIでファイル時刻へ変換しSetFileTime APIでファイルの時刻を変更すれば更新できそうですが、試していないので結果はわかりません。
http://msdn.microsoft.com/library/ja/jpsysinf/ht …
http://msdn.microsoft.com/library/ja/jpsysinf/ht …
http://msdn.microsoft.com/library/ja/jpsysinf/ht …
ご指摘の通り、下記APIにて作成日時を更新することができました。
SystemTimeToFileTime→
LocalFileTimeToFileTime→
SetFileTime
言われてみれば「なるほど~」という対処方法で
なかなか気づきませんでした(汗)
どうもありがとうございましたm(_ _)m
No.2
- 回答日時:
いったん該当ファイルを削除して、それからもう一度作成したらよいと思いますよ。
DeleteFile()とか...
MoveFile関数を、CopyFile&DeleteFile関数に変更しましたが、結果は同じでした。
(対処方法を勘違いしていましたらすみません)
やはりキャッシュが悪さをしてるのでしょうかねぇ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Windows 10 Windows10のメタデータの「メディアの作成日時」は、タイムゾーンによって表示が変わりますか? 3 2022/06/21 02:30
- Access(アクセス) 教えてください。 アクセスでクエリデータを 指定フォルダに保存するマクロを作成しているのですが、ファ 2 2022/11/13 10:35
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サイトマップにサブドメインを...
-
VBAで、JPG写真の撮影日時を読...
-
【Excel VBA】取り込んだファイ...
-
VB2008 iniファイルの全セクシ...
-
Eclipseで検索ができなくなった
-
openglで音楽を再生する
-
RPGでメッセージファイル利用
-
\\記号が入った数値の処理につ...
-
VB6.0のメモリリークについて
-
MusicXMLファイル作り方教えて...
-
ファイル名を任意の名前に作成...
-
ディレクトリのサイズの取得
-
C++.NET 2003 「空のドキュメ...
-
エディットボックスの内容をテ...
-
0バイトのテキストファイル
-
VBS ファイルマージ処理
-
HTMLテキストリンクでExcelファ...
-
excel vba でファイルの読み込...
-
2GB以上のファイルを扱う方法
-
フリーで最適なXMLエディタを探...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
VBAで、JPG写真の撮影日時を読...
-
HTMLテキストリンクでExcelファ...
-
Eclipseで検索ができなくなった
-
VB6.0のメモリリークについて
-
main関数のコマンドライン引数...
-
2GB以上のファイルを扱う方法
-
サイトマップにサブドメインを...
-
ファイル更新日取得
-
ファイル作成日時と更新日時を...
-
エディットボックスの内容をテ...
-
【VBA】印刷マクロのループ処理...
-
<input type="file" で初期値...
-
【VBA】複数CSVの特定範囲を1つ...
-
C++によるファイル送受信プログ...
-
GetOpenFileName()について
-
VB2008 iniファイルの全セクシ...
-
IMEのモードを強制的に変えるには
-
ファイル内容を比較する方法
おすすめ情報