2012-02-08 74 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,具体取决于您尝试实现的目标。