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

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, "")
}

原因

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));
}

参考サイト

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

コメント