2015-10-20 89 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

相關問題