ファイルを削除後、同一名でファイルを作成すると、作成日時が削除したファイルの日付になる件。

C#

現象

ファイルを削除(移動)して、すぐに同一名のファイルを作成すると、新規に作成したファイルの作成時刻が、削除されたファイルの作成時刻と同じになる。

if ((System.IO.File.Exists(fileName1)) && (!System.IO.File.Exists(dstfileName1))) //ファイルが存在ー>移動
{
 System.IO.File.Move(fileName1, dstfileName1);
 System.IO.File.Delete(fileName1);
 System.IO.File.WriteAllText(fileName1, "")
}

原因

Windoesの”ファイル システム トンネリング機能”が動作しているために発生する。
【ファイル システム トンネリング機能】
一定時間内に削除されたファイルと同じ名前のファイルが作成された場合、作成日時などを引き継ぐ機能。
ディレクトリからファイルが削除されると、デフォルトでは15秒間の間削除ファイルの情報がキャッシュされるということになっていますが、レジストリで無効にすることもできるようです。

対策

if ((System.IO.File.Exists(fileName1)) && (!System.IO.File.Exists(dstfileName1))) //ファイルが存在ー>移動
{
 System.IO.File.Move(fileName1, dstfileName1);
 System.IO.File.Delete(fileName1);
 System.IO.File.WriteAllText(fileName1, "")
 System.IO.File.SetCreationTime(fileName1, System.IO.File.GetLastWriteTime(fileName1));
}

参考サイト

同名のファイルは、削除してもすぐ再作成すると作成日時は更新されないのでしょうか?

コメント