1

このパターンのファイルがいくつかあります。

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);
//…
}

しかし、私はそれがより良い方法であるべきだと思います(特に私たちは日を分けていない範囲を持っています)

ありがとう

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 に答える