只查找最近X天的文件
本文关键字:文件 查找 最近 | 更新日期: 2023-09-27 17:49:31
我想搜索目录并找到最近x天的文件,目前我的函数返回所有时间相同的文件(谁创建了2天前),即使我搜索超过2天。
decimal days = nudDays.Value;
//read the number from NumericUpDown comtrol
private void setDays()
//each change in NumericUpDown comtrol will change days variable
{
if (nudDays.Value != 0)
{
days = nudDays.Value;
}
else
{
days = decimal.MaxValue;
}
}
检查我的文件是否在最近x天内创建(days变量):
public bool checkFileCreationDate(FileInfo fileInfo)
{
double num = (double)nudDays.Value * -1;
if (fileInfo.CreationTime > DateTime.Now.AddDays(num))
{
return true;
}
return false;
}
基于以下语句:
目前我的函数返回所有时间相同的文件(谁创建2天前),即使我搜索超过2天。
我相信你想做的是改变这一行:
if (fileInfo.CreationTime > DateTime.Now.AddDays(num))
:
if (fileInfo.CreationTime == DateTime.Now.AddDays(num))
然而,我必须承认,并不是那么清楚你正在寻找什么,所以我希望我解释对了。
更新如果你想要在过去的n
天内创建的所有文件(例如,如果n
是6,那么它将返回任何1-6天前的文件),那么使用这个:
public bool checkFileCreationDate(FileInfo fileInfo)
{
double num = (double)nudDays.Value;
if (DateTime.Now.Subtract(fileInfo.CreationTime).TotalDays <= num)
{
return true;
}
return false;
}
如果你想要n
天前的所有文件(即,如果n
是6,那么它将返回刚好6天前的所有文件),然后使用这个:
public bool checkFileCreationDate(FileInfo fileInfo)
{
double num = (double)nudDays.Value;
if (DateTime.Now.Subtract(fileInfo.CreationTime).TotalDays == num)
{
return true;
}
return false;
}
这可以在您正在寻找的Date值中使用linq pass来完成
Date somedate;
var filterFiles = from file in directoryInfo.GetFiles()
where file.CreationTime > somedate
select file;
如果您的时间范围超过两天,则将包括两天前创建的文件。没关系,因为"四天"实际上可以翻译成[现在的4d ..]现在)
要排除您的测试文件,您必须将天数减少到1。
注意fileInfo。createtime和fileInfo。LastWriteTime在很多情况下是不同的。您可能需要过滤LastWriteTime