如何从具有指定长度的可变扩展名的目录中获取所有文件?

迪瓦夫之父

我有一个巨大的目录,我需要从包括子目录中检索文件。

我的文件是包含各种文件的文件夹,但我只对以 7 位长度的扩展名命名的特定专有文件感兴趣。

例如,我有一个包含以下文件的文件夹:

abc.txt
def.txt
GIWFJ1XA.0201000
GIWFJ1UC.0501000
NOOBO0XA.0100100
summary.pdf
someinfo.zip
T7F4JUXA.0300600
vxy98796.csv
YJHLPLBO.0302300
YJHLPLUC.0302800  

我尝试了以下方法:

var fileList = Directory.GetFiles(someDir, "*.???????", SearchOption.AllDirectories)

并且

string searchSting = string.Empty;
for (int j = 0; j < 9999999; j++)
{
  searchSting += string.Format(", *.{0} ", j.ToString("0000000"));
}

var fileList2 = Directory.GetFiles(someDir, searchSting, SearchOption.AllDirectories);

哪个错误是因为字符串显然太长了。

我只想返回具有指定扩展名长度的文件,在这种情况下,为 7 位数字,以避免必须循环处理我必须处理的数千个数字。

我考虑为搜索条件创建一个变量字符串,该字符串将包含所有 99,999,999 个可能的数字,但 d

我怎样才能做到这一点?

外交不是战争

我不相信有一种方法可以在不遍历目录及其子文件夹中的文件的情况下做到这一点。的搜索模式GetFiles不支持正则表达式,所以我们不能真正使用类似的东西[\d]{7}作为过滤器。我建议使用Directory.EnumerateFiles然后返回符合您条件的文件。

您可以使用它来枚举文件:

private static IEnumerable<string> GetProprietaryFiles(string topDirectory)
{
    Func<string, bool> filter = f =>
    {
        string extension = Path.GetExtension(f);
        // is 8 characters long including the .
        // all remaining characters are digits
        return extension.Length == 8 && extension.Skip(1).All(char.IsDigit);
    };

    // EnumerateFiles allows us to step through the files without
    // loading all of the filenames into memory at once.
    IEnumerable<string> matchingFiles =
        Directory.EnumerateFiles(topDirectory, "*", SearchOption.AllDirectories)
            .Where(filter);
                    
    // Return each file as the enumerable is iterated
    foreach (var file in matchingFiles)
    {
        yield return file;
    }
}

Path.GetExtension包括 the.所以我们检查包括 the 在内的字符数.是 8,并且所有剩余的字符都是数字。

用法:

List<string> fileList = GetProprietaryFiles(someDir).ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何列出目录中除具有指定扩展名的文件以外的所有文件?

如何获取目录中具有特定扩展名的所有文件?

Symfony Finder:获取具有特定扩展名的所有文件以及特定目录中的所有目录

Spark:如何递归读取目录中具有不同扩展名的所有文件?

如何使用Python递归复制目录中具有特定扩展名的所有文件?

如何在目录中查找所有具有相同扩展名的文件

如何在目录中并行查找所有具有相同扩展名的文件

如何从特定给定的目录和所有子目录中搜索具有特定扩展名的文件

获取具有特定扩展名的所有文件

如何获取目录树中具有特定文件扩展名的每个文件的目录名称?

如何将所有具有特定扩展名的文件移动到特定目录?

添加具有指定文件扩展名的文件,其中 basename 在目录中存在

从相同扩展名但不具有扩展名(MATLAB)的目录中获取文件名

列出具有特定扩展名的目录中的所有文件

使用glob python读取目录中具有特定扩展名的所有文件

如何更改目录中所有文件的扩展名?

如何获取具有特定扩展名的所有文件的路径

如何对目录中带有 json 扩展名的所有文件运行 bash 脚本?

如何批量更改文件夹中的所有扩展名。(带有目录)

如何删除特定文件夹中具有特定扩展名的所有文件?

从文档目录中获取包含相同名称但具有不同扩展名的文件列表。

在目录中仅获取具有给定扩展名的文件

从所有子目录复制具有特定扩展名的所有文件

如何在Windows 8中删除具有特定扩展名的所有文件?

如何从git仓库中读取所有具有不同扩展名的文件?

如何添加启动程序,以在XFce中打开所有具有特定扩展名的文件?

如何从目录中删除具有特定文件名长度的所有文件?

如何删除目录中除某些扩展名外的所有文件?

如何在目录中递归添加具有特定扩展名的文件