現象
ファイルを削除(移動)した直後に、同じ名前のファイルを新規作成すると、作成時刻が削除されたファイルの作成時刻と同じになる。
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, "")
}
原因
Windowsの ファイル システム トンネリング機能 が動作しているために発生する。
ファイル システム トンネリング機能とは?
一定時間内に削除されたファイルと同じ名前のファイルが作成されると、作成日時などの情報を引き継ぐ機能。
対策
作成時刻が引き継がれないように、ファイル作成後に明示的に作成時刻を設定する。
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));
}
コメント