尝试删除早于x天的文件vb.net
我有一段基本代码,用于删除给定目录中的文本文件:尝试删除早于x天的文件vb.net,vb.net,file,windows-services,find,delete-file,Vb.net,File,Windows Services,Find,Delete File,我有一段基本代码,用于删除给定目录中的文本文件: 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,
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中的任何文件。但是它不会,但不会产生错误
“现在”的时间是2012年8月2日13:59:00,大于0。但是我不明白为什么不删除文件?日期之间的差异不到一天 您正在调用
Days
属性,这是一个整数类型-对于小于一天的间隔,这将是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,即截断为较小的整数值。您可能希望使用LastWriteTime
而不是CreateTime
,取决于您试图实现的目标。当您减去差值小于1天的日期时,TimeSpan zero的days属性不应该是吗?感谢您的清除,出于测试目的,我将其更改为>=并删除了文件。我将等待一天,并将其设置为>,以查看它是否工作。@ASmith:或者您可以使用TotalDays属性,它是一个小数,因此12小时的时间跨度将为0.5 TotalDays。@a Smith:为什么要等待?将本地时间向后设置几天并创建文件,或者如果您在本地计算机上没有足够的权限来创建文件,只需(暂时)修改if
以立即读取。AddDays(3)
。