2015-10-20 195 views
6

我有c#应用程序。这写入登录文件夹。删除文件并重新创建文件后,不更改Windows中的创建日期

代码如下。

if (File.Exists(@"C:\EXT_LOG\LOG.txt")) 
{ 
    File.Delete(@"C:\EXT_LOG\LOG.txt"); 
} 

string Data = "xxxxx"; 
System.IO.StreamWriter file = new StreamWriter(@"C:\EXT_LOG\LOG.txt"); 
file.WriteLine(Data); 
file.Dispose(); 
file.Close(); 

我删除文件,如果存在,我创建具有相同名称的文件。 当我运行程序时,文件的创建日期不变。

我猜windows的任何管理器或任何文件表仍然包含该文件。

那么,当我删除文件时,是否可以删除管理器或文件表内容?

+0

如何以及何时你检索创建日期?如果它只是Windows资源管理器,你有没有尝试点击F5刷新视图? –

+1

@GrantWinney其实你可以从Windows资源管理器自己测试。 1)查找现有的旧文件。 2)删除它3)创建一个具有相同名称的新文件4)新文件将具有相同的**创建**每个旧文件(假设你足够快)。请参阅下面的dotnetkid答案。我很惊讶自己:) – MickyD

+2

这样做的原因是为了安全保存。就像MS WORD所做的一样。当应用程序自动保存时,它们不会覆盖文件。相反,他们移动旧文件,并创建一个副本新文件。但是,新文件需要保留旧文件的属性,包括创建时间。请参阅您在前面看到的带有〜符号的临时文件,使隐藏文件可以看到发生这种情况。 – SreekanthGS

回答

4

这就是它在Windows中的工作原理。我还没有搜索谷歌为什么。但是,您似乎可以通过C#使用System.IO.File.SetCreationTime方法来设置文件的创建日期。

public static void SetCreationTime(
    string path, 
    DateTime creationTime 
) 

来源:https://msdn.microsoft.com/en-us/library/system.io.file.setcreationtime(v=vs.100).aspx

+3

正如dotnetkid提到的,这是默认的Windows行为。此行为的原因可以在此处找到: https://support.microsoft.com/zh-cn/kb/172190 – Don

相关问题