尝试删除早于x天的文件vb.net

9

我有一小段基础代码,用于删除给定目录中的文本文件:

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,假设它会删除目录中的任何文件。但是它并没有删除任何文件,也没有出现错误。
当前时间为#2/8/2012 13:59:00 PM#,大于0。但我很困惑为什么它不会删除文件?

当您用时间差小于1天进行日期减法运算时,TimeSpan的天数属性是否应该为零? - Oybek
3个回答

3
日期之间的差异是小于一天的。您正在调用整数类型的“Days”属性 - 对于少于一天的时间间隔,这将为“0”。

谢谢你澄清了这个问题,我为了测试把它改成了>=,结果文件被删除了。我会等一天再把它设置为>,看看是否有效。 - A Smith
1
@ASmith:或者你可以直接使用TotalDays属性,它是一个十进制数,因此12小时的时间跨度将是0.5 TotalDays。 - Meta-Knight
@A Smith:为什么要等呢?把你的本地时间往前调几天,然后创建文件,或者如果你在本地机器上缺乏足够的权限来执行此操作,只需(暂时)修改你的 If 语句为 Now.AddDays(3) 即可。 - pete

1

根据您要实现的目标,您可能希望使用 LastWriteTime 而不是 CreateTime


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,即被截断为较小的整数值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接