2017-05-06 12 views
0

ファイルの作成日を取得しようとしています。私はこのためにFile.GetCreationTime() methodを使用しています。ファイルが新しいファイルの場合は正常に動作しているようです。私がファイルを削除して再作成すると、元の作成時間が与えられているようです。ファイルが削除されたので、ファイルの元の日付と時刻が返されていることも変わっていて、不可能でもあるようです。File.GetCreationTime()が異常な値を返す

私は一緒に問題を実証するための簡単なコンソールアプリケーションを置く:

static void Main(string[] args) 
{ 
    const string fileName = @"C:\Temp\dummy.txt"; 

    File.AppendAllText(fileName, "This is a test"); 
    DateTime creationDate = File.GetCreationTime(fileName); 

    Console.WriteLine(creationDate.ToShortDateString() + " " + creationDate.ToShortTimeString()); 

    System.Threading.Thread.Sleep(120000); 
    File.Delete(fileName); 

    File.AppendAllText(fileName, "This is a test"); 
    creationDate = File.GetCreationTime(fileName); 

    Console.WriteLine(creationDate.ToShortDateString() + " " + creationDate.ToShortTimeString()); 

} 

このプログラムは、ダミーファイルを作成し、テキストThis is a testを追加します。次に、作成日時をコンソール画面に表示します。ここまでは順調ですね。その後、2分間寝ます。 2分経過すると、ファイルを削除して再作成します。その後、作成日時がコンソール画面に表示されます。私は後者の出力がオリジナルよりも2分遅れていることを除いては同じですが、同じ正確な日付と時刻を引っ張っています!私はプログラムを一歩踏み込んだので、実際にはハードドライブから元のファイルを削除していることを確認することができます。

Actual Output 
-------------- 
5/6/2017 10:25 AM 
5/6/2017 10:25 AM 


Expected Output 
---------------- 
5/6/2017 10:25 AM 
5/6/2017 10:27 AM 

ここで何が起こっているのか、その問題を回避する方法を教えてもらえますか? MSDNページから

+0

おそらくこのため:http://stackoverflow.com/questions/8804342/windows-filesystem-creation-time-of-a-file-doesnt-change-when-while-is-deleted – Crowcoder

答えて

0

NTFSフォーマットのドライブは時間の短い期間のために、このようなファイルの作成日時など、ファイルに関する情報をキャッシュすることができます。その結果、既存のファイルを上書きまたは置換する場合は、ファイルの作成時刻を明示的に設定する必要があります()。

関連する問題