文件路径中的狂野角色

时间:2016-08-26 10:10:40

标签: c# wpf

用户将按照惯例命名图像文件名。例如, 01_343_UserDescription_987.jpg ,其中数字代码是常量,用户描述可以是任何内容。所以我可以做到以下几点:

    foreach (...)
    {
       image[i].Source = new BitmapImage(
           new Uri("C:/Images/0" + i + "_343_" + * + "_987", UriKind.Absolute));
    }

是否有通配符或我是否可以这样做?

3 个答案:

答案 0 :(得分:3)

URI必须指向一个确切的位置,而不是一些可以匹配一个或多个文件的通配符。您可以通过一个简单的额外步骤自己制作:

string[] files = Directory.GetFiles("C:/Images/", $"0{i}_343_*_987");
Uri uri = new Uri(files.Single(), UriKind.Absolute);

不确定是否需要这样的斜杠,如果是,请使用files.First().Replace('\\', '/')

答案 1 :(得分:2)

不,URI不能包含通配符。但是,您可以使用通配符来获取目录中遵循该模式的所有文件的列表:

string[] files = Directory.GetFiles("C:\\Images", "0?_343_*_987.jpg");
foreach (var file in files)
{
    Uri uri = new Uri(file UriKind.Absolute);
    ...
}

请注意我在这里使用两个通配符!

答案 2 :(得分:1)

  

是否有通配符或我是否可以这样做?

不,您必须添加第一步以查找实际文件名,然后使用该名称作为构造函数参数。

您可以查看Directory.GetFiles