我有一些这种模式的文件:
PrefixyyyyMMddHHmmss.txt
该前缀始终相同。
例如: Prefix20120830115800.txt
Prefix20120829114200.txt
Prefix20120829134621.txt
我想编写一个函数来获取一天和范围,并返回其名称在当天输入范围内的所有文件:
ReadFiles(string filesLocation, DateTime fromDate, int range)
现在我使用这种方法:
for (int i = 0; i <= range; i++)
{
SearchFolderForFiles(location, fromDate.AddDays(i));
}
SearchFolderForFiles(//params)
{
//…
string searchTemplate = string.Format("Prefix{0:yyyyMMdd}*.txt", date);
DirectoryInfo di = new DirectoryInfo(location);
FileInfo[] myFiles = di.GetFiles(searchTemplate);
//…
}
但我认为这应该是更好的方式(特别是我们的范围没有分开的日子)
由于
答案 0 :(得分:2)
你可以用linq做到这一点。
可怕的例子,但你可以看到我得到的东西:)
DateTime startDate = DateTime.Now;
DateTime endDate = DateTime.Now;
var myFiles = new DirectoryInfo(location).EnumerateFiles()
.Where(f => DateTime.Parse(System.IO.Path.GetFileNameWithoutExtension(f.Name).Replace("Prefix", "")) >= startDate
&& DateTime.Parse(System.IO.Path.GetFileNameWithoutExtension(f.Name).Replace("Prefix", "")) <= endDate);