1

我有一些具有这种模式的文件:

前缀yyyyMMddHHmmss.txt

该前缀始终相同。

例如:前缀20120830115800.txt

前缀20120829114200.txt

前缀20120829134621.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);
//…
}

但我认为这应该是更好的方法(特别是我们有范围不分开的日子)

谢谢

4

1 回答 1

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); 
于 2012-12-14T02:00:55.987 回答