我正在尝试获取文件的创建日期。我正在使用File.GetCreationTime() method来执行此操作。如果文件是新文件,它似乎工作正常。如果我删除文件并重新创建它,它似乎给了我原始的创建时间。由于文件已被删除,因此返回文件的原始日期和时间似乎很奇怪甚至不可能。
我整理了一个简单的控制台应用程序来演示这个问题:
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
有人可以向我解释这里发生了什么,以及如何解决这个问题?