2012-02-08 75 views
5

舊文件,我有我使用給定的目錄中刪除文本文件的代碼基本位:試圖刪除x天vb.net

For Each file As IO.FileInfo In New IO.DirectoryInfo(filePath).GetFiles("*.txt") 
    If (Now - file.CreationTime).Days > intdays Then file.Delete() 
    Next 

filePath是文件所在的目錄。

intdays是決定文件保留多少天的變量。

要測試我將intdays設置爲0的代碼,假定它會刪除directoy中的任何文件。但它不,但不會產生任何錯誤。

時間「現在」是#2/8/2012 13:59:00 PM#這是大於0.但我很困惑,爲什麼它不會然後刪除該文件?

+0

不應該是,當您減去差異小於1天的日期時,TimeSpan的天數屬性爲零? – Oybek 2012-02-08 14:02:26

回答

3

日期之間的差異是小於一天

您正在調用Days屬性,該屬性是整數類型 - 對於小於一天的間隔,這將是0

+0

感謝您解決這個問題,爲了測試目的,我將它改爲> =並刪除了這些文件。我將等待一天,它將設置爲>以查看它是否有效。 – 2012-02-08 14:06:41

+0

@Downvoter - 謹慎評論? – Oded 2012-02-08 14:18:41

+1

@ASmith:或者您可以使用TotalDays屬性,它是一個小數,所以12小時的時間跨度將爲0.5 TotalDays。 – 2012-02-08 14:31:27

0

我測試過它

 Dim d = New Date(2012, 11, 21, 16, 0, 0) 
     Dim dGreater = New Date(2012, 11, 21, 17, 0, 0) 
     Dim result = dGreater - d 
     Console.WriteLine(result.Days) 

所以,當你減去有差異不到一天的結果Days屬性爲0,即截斷成較小的整數值的日期。

+0

@Oded對不起沒有注意到。已經改變了語言。 – Oybek 2012-02-08 14:06:54

0

您可能想要使用LastWriteTime而不是CreateTime,具體取決於您嘗試實現的目標。