現象
ファイルを削除(移動)して、すぐに同一名のファイルを作成すると、新規に作成したファイルの作成時刻が、削除されたファイルの作成時刻と同じになる。
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));
}
コメント