gpt4 book ai didi

c# - 带通配符过滤的绝对路径

转载 作者:行者123 更新时间:2023-11-30 12:13:50 25 4
gpt4 key购买 nike

我有一个字符串列表,其中包含出于操作目的应忽略的文件。所以我很好奇如何处理其中有外卡的情况。

例如,我的字符串列表中可能的输入是:

C:\Windows\System32\bootres.dll
C:\Windows\System32\*.dll

我认为第一个例子很容易处理,我可以做一个字符串等于检查(忽略大小写)来查看文件是否匹配。但是我不确定如何确定给定文件是否可以匹配列表中的通配符表达式。

关于我正在做的事情的一些背景知识。允许用户将文件复制到某个位置/从某个位置复制文件,但是,如果该文件与我的字符串列表中的任何文件匹配,我不想允许复制。

可能有更好的方法来处理这个问题。

我要排除的文件是从配置文件中读入的,并且我收到了试图复制的路径的字符串值。似乎我拥有完成任务所需的所有信息,问题只是什么是最佳方法。

最佳答案

IEnumerable<string> userFiles = Directory.EnumerateFiles(path, userFilter);

// a combination of any files from any source, e.g.:
IEnumerable<string> yourFiles = Directory.EnumerateFiles(path, yourFilter);
// or new string[] { path1, path2, etc. };

IEnumerable<string> result = userFiles.Except(yourFiles);

解析以分号分隔的字符串:

string input = @"c:\path1\*.dll;d:\path2\file.ext";

var result = input.Split(";")
//.Select(path => path.Trim())
.Select(path => new
{
Path = Path.GetFullPath(path), // c:\path1
Filter = Path.GetFileName(path) // *.dll
})
.SelectMany(x => Directory.EnumerateFiles(x.Path, x.Filter));

关于c# - 带通配符过滤的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com