C#在以日期命名的多个子文件夹中获取具有多个通配符的文件

Posted

技术标签:

【中文标题】C#在以日期命名的多个子文件夹中获取具有多个通配符的文件【英文标题】:C# get files with multiple wildcard within multiple sub-folders named after dates 【发布时间】:2022-01-06 16:25:44 【问题描述】:

我有多个以年\月\日命名的文件夹。它位于 Azure blob 存储中,如果有任何更改,我已经拥有从 blob 存储下载文件的代码。 喜欢:

2020 01 01 filetest_20210101_133035.csv filetest_20210101_183035.csv otherfile_20210101_183035.csv ... 31 02 ... 2021 01 01 02 ... ...

我在 SQL 数据库中有一个表,其中包含通配符和文件下载的最后日期时间(文件名中的日期时间相同)。

我需要下载所有与通配符匹配并且在从 SQL 表(LastDateTime 列)中检索到的日期之后的文件。我认为在所有文件夹中搜索通配符会很繁重,尤其是在有多年数据的情况下。

我想我可以在 if 语句中添加下载功能来验证日期,如下所示:

if ([Date time part of the name file] > [my variable with the LastDateTime])

DownloadFromBlob([filename]) //Custom function

但我不想浏览所有文件夹。

在 C# (.NET Framework 4.7) 中执行此操作的最佳方法是什么?

【问题讨论】:

【参考方案1】:

使用linq query根据创建日期获取文件,然后下载文件。

using System.Linq;

DirectoryInfo info = new DirectoryInfo("PATH_TO_DIRECTORY_HERE"); //Your Path
FileInfo[] files = info.GetFiles().OrderBy(p => p.LastDateTime).ToArray();
foreach (FileInfo file in files)

    // DO Something...

请参考这个SO 线程。

【讨论】:

以上是关于C#在以日期命名的多个子文件夹中获取具有多个通配符的文件的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用包含随机数的原始名称标识和重命名文件

如何在objective-c中查找具有通配符表达式的多个文件

读取具有多个名称空间的子节点

使用 Impala 选择具有通配符模式的多个表并将它们连接起来

获取多个日期表的 BQ 元数据

从具有多个命名空间的 XElement 中获取元素