是否有一种简单的方法来获取与文件名模式匹配的文件名列表,包括对父目录的引用?我要的是让"..\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/

10-13 02:00