【问题标题】:File.GetCreationTime() is returning strange value [duplicate]File.GetCreationTime() 返回奇怪的值 [重复]
【发布时间】:2017-05-06 17:32:09
【问题描述】:

我正在尝试获取文件的创建日期。我正在使用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

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

【问题讨论】:

标签: c# file


【解决方案1】:

来自MSDN 页面

NTFS 格式的驱动器可能会在短时间内缓存有关文件的信息,例如文件创建时间。因此,如果要覆盖或替换现有文件,可能需要明确设置文件的创建时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多