2017-05-06 133 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 

有人可以向我解释这里发生了什么,以及如何解决这个问题?

+0

可能是因为这样:http://stackoverflow.com/questions/8804342/windows-filesystem-creation-time-of-a-file-doesnt-change-when-while-is-deleted – Crowcoder

回答

0

MSDN页面

NTFS格式化的驱动器可以高速缓存信息有关文件,如文件的创建时间,对于短时间。因此,如果覆盖或替换现有文件,则可能需要明确设置文件的创建时间。