是否有一种简单的方法来获取与文件名模式匹配的文件名列表,包括对父目录的引用?我要的是让"..\ThirdParty\dlls\*.dll"
返回像["..\ThirdParty\dlls\one.dll", "..\ThirdParty\dlls\two.dll", ...]
这样的集合
我可以找到几个与匹配文件名有关的问题,包括完整路径,通配符,但没有任何内容在模式中包含“ .. \”。 Directory.GetFiles
明确禁止使用它。
我要使用的名称是将它们包含在zip存档中,因此,如果有一个zip库可以理解这样的相对路径,我会更乐于使用。
这些模式来自输入文件,在编译时未知。它们可能变得非常复杂,例如..\src\..\ThirdParty\win32\*.dll
,因此解析可能不可行。
不得不将其放在zip中也是我不太热衷于将模式转换为fullpath的原因,我确实想要zip中的相对路径。
编辑:我真正在寻找的是/ bin / ls的C#等效项。
最佳答案
static string[] FindFiles(string path)
{
string directory = Path.GetDirectoryName(path); // seperate directory i.e. ..\ThirdParty\dlls
string filePattern = Path.GetFileName(path); // seperate file pattern i.e. *.dll
// if path only contains pattern then use current directory
if (String.IsNullOrEmpty(directory))
directory = Directory.GetCurrentDirectory();
//uncomment the following line if you need absolute paths
//directory = Path.GetFullPath(directory);
if (!Directory.Exists(directory))
return new string[0];
var files = Directory.GetFiles(directory, filePattern);
return files;
}
关于c# - 匹配“..\ThirdParty\dlls\*。dll”的文件名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7618919/