3

ファイルの削除と再書き込みに関する奇妙な動作に気付きました。2 つの操作の間隔が十分に短いと、ファイルの作成時間が更新されません。

次のコードを実行しました:

File.Delete("hello");
using(var stream = new StreamWriter("hello"))
{
    stream.WriteLine("hello");
}
var f = new FileInfo("hello");
Console.WriteLine("{0} {1}ms", f.CreationTime, f.CreationTime.Millisecond);

行にブレークポイントを設定するとusing(...)、削除後にファイルが消えるのがわかりますが、最後には古い作成日が表示されます。エクスプローラーからファイルを手動で削除してからこのコードを実行することもできますが、古い作成時刻が表示されます。

ただし、削除と再作成の間に不確定な時間 (約 1 分) 待機すると、作成時間が正しく設定されます (上記のブレークポイントでデバッガーを待機すると機能します)。

これはどこから来たのですか?それは文書化されたウィンドウの動作ですか?私は何かを忘れていますか?

PS : Windows XP でこれをテストしています。

4

2 に答える 2

0

FileInfo を強制的に更新してみてください (データがキャッシュされているため):

var f = new FileInfo("hello");
f.Refresh(); // Force to read all props again
Console.WriteLine("{0} {1}ms", f.CreationTime, f.CreationTime.Millisecond);
于 2012-06-11T13:26:26.753 に答える